WeekHashMap
生活随笔
收集整理的這篇文章主要介紹了
WeekHashMap
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.存儲結構
WeakHashMap 的 Entry 繼承自 WeakReference。
被 WeakReference 關聯的對象在下一次垃圾回收時會被回收。
WeakHashMap 主要用來實現緩存,通過使用 WeakHashMap 來引用緩存對象,由 JVM 對這部分緩存進行回收。
private static class Entry<K,V> extends WeakReference<Object> implements Map.Entry<K,V>2.ConcurrentCache
Tomcat 中的 ConcurrentCache 使用了 WeakHashMap 來實現緩存功能。
ConcurrentCache 采取的是分代緩存:
- 經常使用的對象放入 eden 中,eden 使用 ConcurrentHashMap 實現,不用擔心會被回收(伊甸園) ;
- 不常用的對象放入 longterm,longterm 使用 WeakHashMap 實現,這些老對象會被垃圾收集器回收。
當調用 get() 方法時,會先從 eden 區獲取,
- 如果沒有找到的話再到 longterm獲取,
- 當從 longterm 獲取到就把對象放入 eden 中,從而保證經常被訪問的節點不容易被回收。
當調用 put() 方法時,
- 如果 eden 的大小超過了 size,那么就將 eden 中的所有對象都放入 longterm 中,利用虛擬機回收掉一部分不經常使用的對象。
?
總結
以上是生活随笔為你收集整理的WeekHashMap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vector源码
- 下一篇: ISP、主机之间的通信方式、电路交换和分