垃圾收集器使用垃圾收集根(GC根)的概念來識別活的和死的對象。對java感興趣的同學可以參加java培訓,你可以學會更多的java新技術。
此類垃圾收集根的示例包括:
l 由系統類裝入器(非自定義類裝入器)裝入的類
l 實時線程
l 當前執行方法的局部變量和參數
l JNI方法的局部變量和參數
l 全球JNI參考
l 用作同步監視器的對象
l JVM出于垃圾收集目的而保留的對象
垃圾收集器遍歷內存中的整個對象圖,從那些垃圾收集根開始,并遵循從根到其他對象的引用。想要學習java更多知識和技能,可以考慮參加java培訓,有經驗豐富的專業講師指導教學,有緊跟市場需求的實時課程,可以讓你快速掌握這門技術,節約時間,少走彎路。
標準垃圾收集實施包括三個階段:
1.將對象標記為活動
在這一步中,GC通過遍歷對象圖來識別內存中的所有活動對象。
當GC訪問一個對象時,它將其標記為可訪問的,因此是活動的。垃圾收集器訪問的每個對象都標記為活動。所有不能從GC根訪問的對象都是垃圾,并被視為垃圾收集的候選對象。
2.掃描死對象
在標記階段之后,內存空間被活動(已訪問)和死亡(未訪問)對象占用。掃描階段釋放包含這些死對象的內存碎片。
3.壓縮內存中的剩余對象
掃描階段移除的固定對象不一定相鄰。因此,最終可能會有零碎的內存空間。
在垃圾收集器刪除死對象后,可以壓縮內存,以便剩余的對象位于堆開始處的連續塊中。
壓縮過程使按順序為新對象分配內存變得更容易。想對java有更深入的了解,可以參加java培訓,在專業老師的指導下,你可以很快掌握java的更多特性。