Java:對象的強、軟、弱和虛引用
引用:
String str = new String("abc");
//置空
str = null;
- 強引用:當我們new一個對象時就是創(chuàng)建了一個具有強引用的對象,如果一個對象具有強引用,垃圾回收器就絕不會回收它。Java虛擬機寧愿拋出OutOfMemoryError異常,使程序異常終止,也不會回收具有強引用的對象來解決內存不足的問題。
//軟引用SoftReference
SoftReference<String> softReference = new SoftReference<String>(str);
// 手動清除
softReference.clear();
- 軟引用:如果一個對象只具有軟引用,當內存不夠時,會回收這些對象的內存,回收后如果還是沒有足夠的內存,就會拋出OutOfMemoryError異常。Java提供了SoftReference類來實現(xiàn)軟引用。
WeakReference<String> weakReference = new WeakReference<>(str);
System.gc();
- 弱引用:弱引用比起軟引用具有更短的生命周期,垃圾收集器一旦發(fā)現(xiàn)了只具有弱引用的對象,不管當前內存是否夠用,都會回收它的內存。Java提供了WeakReference類來實現(xiàn)弱引用。
//虛引用PhantomReference
PhantomReference phantomReference = new PhantomReference<>(arg0, arg1);
- 虛引用:虛引用并不會決定對象的生命周期,如果一個對象僅持有虛引用,這就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收,一個只具有虛引用的對象,被垃圾回收器回收時。會收到一個系統(tǒng)通知,這也是虛引用的主要作用。Java提供了PhantomReference類來實現(xiàn)虛引用。
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。