java對象在內存中的狀態

可以把JVM內存中的對象的引用理解成一種有向圖,把引用變量、對象都當作有向圖的頂點,將引用關係當作圖的有向邊,有向邊總是從引用變量指向被引用的Java對象。

1、可達狀態
當一個對象被創建後,有一個以上的引用變量引用它。在有向圖中可以從起始頂點導航到該對象,那麼它就出於可達狀態,程序可以通過引用變量來調用該對象的屬性和方法。
2、可恢復狀態
如果程序中某個對象不再有任何引用變量引用它,他將進入可恢復狀態,此時從有向圖的起始頂點不能導航到該對象。在這種狀態下,系統的垃圾回收機制轉變回收該對象所佔用的內存。在回收該對象之前,系統會調用可恢復狀態的對象的finalize方法進行資源清理,如果系統調用finalize方法重新讓一個以上的引用變量引用該對象,則該對象會再次編程可達狀態;否則,該對象將進入不可達狀態。
3、不可達狀態
當對象的所有關聯都被切斷,且系統調用所有對象的finalize方法依然沒有使該對象變成可達狀態後,這個對象將永久性地失去引用,最後變成不可達狀態。只有當一個對象出於不可達狀態,系統纔會真正回收該對象所佔用的資源。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章