我們知道在宣告一個物件死亡前,至少需要進行兩次標記。如果物件在進行可達性分析后發現沒有與GC Roots相連接的參考鏈,那他會被第一次標記。《深入理解Java虛擬機 第三版 周志明》
這時我的問題來了,這里標記的到底是可達性分析發現的與GC Roots相連接的參考物件呢,還是那些沒有連接的物件呢,如果是那些沒有參考連接的物件,那么我們是如何找到它們的?我是這樣想的,第一種方式是我們需要在這個物件不再使用的時候,就對其進行標記,而不是經過可達性分析然后判斷哪些物件不可達然后再標記這些為不可達物件,因為我們這時已經找不到這些物件。第二種方式是我們進行可達性分析時,標記GC Roots參考鏈上的物件,也就是說我們標記的是那些有參考存在的物件(狹義,別理解成參考計數法的那種。。。)。
望大佬解惑!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/233283.html
標籤:Java SE
上一篇:新手問一下各位大佬,哪里錯了?
