WeakHashMap和四种引用总结:
生活随笔
收集整理的這篇文章主要介紹了
WeakHashMap和四种引用总结:
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WeakHashMap
當一個鍵對象被GC(垃圾回收)回收時,響應的值對象的引用從map中刪除,WeakHashMap能節約存儲空間,來實現緩存那些非必要的數據
四種類型的引用:
強運用(Srtrong):
不管如何都不會被GC回收,當jvm內存空間不足,JVM寧愿拋出OOM運行時錯誤,使得程序終止,也不會隨時回收強引用所引用的對象
通過new出來的對象都是強引用
軟引用(SoftReference)
當內存空間充足時軟引用的對象不會被GC回收 當內存空間不足時軟引用的對象可以被GC回收
Object o = new Object();ReferenceQueue <Object> referenceQueue = new ReferenceQueue <Object>();SoftReference <Object> softReference = new SoftReference <Object>(o, referenceQueue);//當對象被回收時:軟引用對象會放入referenceQueue隊列里弱引用(weakReference):
弱引用他的強度比軟引用弱,被弱引用所關聯的對象引用時,當發生GC操作時,不論當前空間是否充足都會回收弱引用所指向的對象
Object o = new Object();ReferenceQueue <Object> referenceQueue = new ReferenceQueue <Object>();WeakReference <Object> weakReference = new WeakReference<Object>(o, referenceQueue);//當對象被回收時:弱引用對象會放入referenceQueue隊列里WeakHashMap實現就是基于弱引用來實現的
虛引用I(PhantomReference):
虛引用是最弱的引用關系,一個對象是否有虛引用的存在,不會影響對象的生命周期,虛引用存在的目的是當對象被回收時收到一個系統通知
Object o = new Object();ReferenceQueue <Object> referenceQueue = new ReferenceQueue <Object>();PhantomReference <Object> phantomReference = new PhantomReference<Object>(o, referenceQueue);o = null;System.gc(); //手動觸發GCif (phantomReference.isEnqueued()) {System.out.println("正在被回收");} else {System.out.println("沒有被回收");}總結
以上是生活随笔為你收集整理的WeakHashMap和四种引用总结:的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LinKedHashMap和TreeMa
- 下一篇: Set接口介绍