勵志

勵志人生知識庫

gc操作流程

GC垃圾收集)操作流程主要包括以下幾個步驟:

判斷對象是否存活。通過引用計數算法和可達性分析算法來判斷對象是否存活。由於引用計數算法無法解決循環引用的問題,目前主要使用可達性分析算法。

遍歷並回收對象。通過垃圾收集器(如SerialParallelCMSG1等)來回收垃圾。垃圾收集器使用的算法包括標記清除算法、標記整理算法、複製回收算法和分代回收算法。

標記清除算法。先標記存活的對象,然後清除未存活的對象。這種算法的效率不高,但會產生碎片。

標記整理算法。在標記完畢後,讓所有存活的對象向一端移動,以消除記憶體中的碎片。

複製回收算法。將堆分為Eden區和兩個Survivor區,Eden區的數據交換到其中一個Survivor區,然後清空Eden區,對Survivor區進行相同的操作,直至對象晉升到老年代(Tenured區)。

分代回收算法。根據對象存活的時間將記憶體分為年輕代(Young Generation)和老年代(Old Generation),年輕代進一步分為Eden區和兩個Survivor區。在年輕代中,通過Minor GC清理不活躍的對象,而在老年代中則通過Major GC(或稱為Full GC)清理不活躍的對象。

不同的垃圾收集器(如Serial、Parallel、CMS、G1)採用不同的算法和策略來執行垃圾回收,以適應不同的套用場景和性能需求。