java强引用软引用深刻理解_Java-强引用、软引用、弱引用、虚引用
為什么有多種引用
《深入理解JVM虛擬機》一書中提到了Java中的4種引用,分別是強引用、軟引用、弱引用、虛引用,為什么要分這么多種引用呢?這是因為每一種引用的生命周期都不相同,準確的說垃圾收集器對其處理的方式有區別。
引用的分類
1.強引用:比如Object obj = new Object(),創建一個對象obj,這屬于強引用,我們平時所說的“引用”,其實就是指“強引用”,只要強引用還存在,垃圾收集器就永遠不會回收被引用的對象;
2.軟引用(SoftReference):描述一些還有用,但并非必須的對象。對于軟引用關聯著的對象,在系統將要發生內存溢出之前,將會把這些對象列進回收范圍再次進行回收,如果回收完后還沒有足夠的內存,才會拋出內存溢出異常;
3.弱引用(WeakReference):也是用來描述一些非必需的對象,強度比軟引用更弱一些,被弱引用關聯的對象只能生存到下一次垃圾收集發生之前。當垃圾收集器工作時,無論當前內存是否足夠,都會回收掉只被弱引用關聯的對象;比如ThreadLocal中就是用了弱引用:https://www.cnblogs.com/-beyond/p/13125195.html
4.虛引用(PhantomReference):最弱的引用關系,一個對象是否有虛引用的存在,完全不會對其生存時間構成影響,也無法通過虛引用來取得一個對象實例。虛引用的功能是:為一個對象設置虛引用的唯一目的就是能在這個對象被垃圾收集器回收時收到一個系統通知;
總結
以上是生活随笔為你收集整理的java强引用软引用深刻理解_Java-强引用、软引用、弱引用、虚引用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库开发技术java方向_Java开发
- 下一篇: 动态PDF在线预览