jvm可觸及性

2021-08-08 17:59:38 字數 789 閱讀 9512

可觸及性

可觸及的

從根節點可以觸及到這個物件

可復活的

一旦所有引用被釋放,就是可復活狀態

因為在finalize()中可能復活該物件

不可觸及的

在finalize()後,可能會進入不可觸及狀態

不可觸及的物件不可能復活

可以**

public

class canreliveobj

@override

public string tostring()

public

static

void

main(string args) throws

interruptedexceptionelse

system.out.println("第二次gc");

obj=null; //不可復活

system.gc();

thread.sleep(1000);

if(obj==null)else

}

canreliveobj finalize called

obj 可用

第二次gc

obj 是 null

經驗:

避免使用finalize(),操作不慎可能導致錯誤。

優先順序低,何時被呼叫, 不確定

何時發生gc不確定

可以使用try-catch-finally來替代它

誰才是真正的垃圾 判斷物件的可觸及性

垃圾 的基本思想是考察每乙個物件的可觸及性,即從根節點開始是否可以訪問到這個物件,如果可以,則說明當前物件正在被使用,如果從所有的根節點都無法訪問到某個物件,說明該物件已經不再使用了,一般來說,此物件符合垃圾 的條件。但是,乙個無法觸及的物件有可能在某個條件下復活自己,如果這樣,那麼對它的 就是不合...

JVM 理解性學習(一)

重新學習,重新理解 驗證 class 檔案載入到 jvm 裡的時候,會驗證下該檔案是否符合 jvm 規範。準備 給實體類分配記憶體空間,以及給類變數 static 修飾 分配 預設值 解析 將符號引用替換為直接引用。初始化 將類初始化,如果有父類且父類未初始化,會先初始化父類,再初始化此類。然後再對...

可復用性 Reusability

1.2模組 類和介面 1.3庫 api 1.4架構 框架framework 2.可重用性的外部表現 可復用性是軟體構造過程中乙個重要的外部質量指標。對經過充分測試的程式進行復用可以利用其高可靠性 穩定性 適應性,並可降低成本以及開發時間。源 可見,直接複製並進行修改。需要對源 內部結構 設計思路充分...