HashMap与垃圾回收
生活随笔
收集整理的這篇文章主要介紹了
HashMap与垃圾回收
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在看Java核心技術1的時候看到HashMap的對象,書中講到:?
1.如果有一個值,對應的鍵不再使用他了,但由于key與value之間存在強引用,是不會被垃圾回收的?
2.垃圾回收器跟蹤活動的對象,只要映射對象是活動的,其中的所有桶也是活動的,它們不能被回收?
所以做了下面的測試:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
測試結果:?
?
果然,GC不會回收這兩個垃圾,這個跟Java中的HashMap默認是強引用有關的
分析:?
愿意:其實HashMap存進去的是t1跟t2指向的地址(堆內存中兩條黑色的線)作為key,但進行t1=null,t2=null的時候,本來按照常理來說,Java回收機制會對那些沒有引用的堆內存對象進行回收,但不幸的是,HashMap依舊會強引用著t1跟t2的堆內存對象,導致GC無法對其進行回收
下面講更為深入的講解HashMap:?
1.散列表的原理與實現 - 簡書?
2.哈希表(散列表)原理詳解 - 那年聰聰 - CSDN博客?
3.HashMap的存取之美 - gugege - 博客園?
4.理解LinkedHashMap - children - 博客園
總結
以上是生活随笔為你收集整理的HashMap与垃圾回收的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解java垃圾回收机制
- 下一篇: WeakHashMap垃圾回收原理