色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java如何判斷對象是否還存活

夏志豪2年前45瀏覽0評論

java如何判斷對象是否還存活?

1、引用計數算法

在對象中添加引用計數器,每當有地方引用此對象時,計數器+1;當引用失效是-1;當計數器為0是對象就不可能再被引用。

優點:引用計數算法實現簡單,判斷效率高。注:在java虛擬機里面沒有選用引用計數算法來管理內存的,主要是因為它無法解決對象之間的相互循環引用問題。

例如:Object obj = null;

public void t(){

Test t1 = new Test();

Test t2 = new Test();

t1 .obj = t2;

t2 .obj = t1;

}

2、可達性分析算法

基本思路為通過稱為“GC Roots”的對象作為起始點,從這些起始點向下搜索,搜索所走過的路徑(引用鏈),當一個對象到GC Roots沒有任何引用鏈相連時,則證明此對象是不可用的。如圖:

Java中,可作為GC Roots的對象包括:

①虛擬機棧中引用對象。

②方法區中靜態屬性引用的對象

③方法區中常量引用的對象

④本地方法棧中JNI引用的對象。

3、對象引用

①強引用:如:Object obj = new Object();只要強引用還在,垃圾收集器永遠不會回收掉被引用的對象。

②軟引用:是用來描述一些還有用但并非必須的對象。軟引用關聯的對象在系統將要發生內存溢出之前,將會把這些對象列進回收范圍進行二次回收。如果回收后還沒有足夠的內存,才會拋出內存溢出異常。

③弱引用:用來描述非必需的對象,它的強度比軟引用弱些,被弱引用關聯的對象只能存活到下次垃圾收集之前。

④虛引用:也被稱為幽靈引用或幻影引用,它是最弱的引用關系。一個對象是否有虛引用存在,完全不會對其生成時間構成影響,也無法通過虛擬引用來獲取一個對象實例。

java 驗證,java如何判斷對象是否還存活