回覆列表
-
1 # udtyf23171
-
2 # 使用者7278361049623
java 的垃圾回收機制: 1.垃圾回收是由虛擬機器自動執行,不能人為地干預。
2.系統比較空閒(垃圾回收執行緒) 3.物件不在被引用.物件處於引用的隔離島狀態(隔離引用),物件具備了回收的條件 4.gc()方法,可以建議虛擬機器執行垃圾回收,但是不能確定是否會執行回收。
java 的垃圾回收機制: 1.垃圾回收是由虛擬機器自動執行,不能人為地干預。
2.系統比較空閒(垃圾回收執行緒) 3.物件不在被引用.物件處於引用的隔離島狀態(隔離引用),物件具備了回收的條件 4.gc()方法,可以建議虛擬機器執行垃圾回收,但是不能確定是否會執行回收。
java的垃圾回收會由虛擬機器自動進行。因為各版本虛擬機器的實現不一樣,具體回收時點會有一定的不同,但大體上在對記憶體不足時,是一定會嘗試進行一次回收的。如果回收後,記憶體還是不夠,則會報出經典的OutofMemory異常。使用者可以呼叫System.gc()進行強制的記憶體回收,但和上面一樣,回收完後不一定就保證能有足夠的記憶體。具體原理你可以想象為虛擬機器會儲存一張森林結構的記憶體物件表,林中各樹的根節點是各個執行緒,執行緒中引用的物件,以及這些物件引用的其他物件會按照引用關係依次排列分佈到樹中。這樣當GC進行時,依次掃描所有物件,如果一個物件的父引用指向不到一個處於活動狀態的執行緒,或者所有直接父引用已經標記為可回收,則將這個物件標記為可回收。最後再釋放所有標記為可回收的物件記憶體,達到清理記憶體垃圾的目的。