1. 標記——刪除
將不再使用的對象內存空間標記,等JVM內存滿了,就將標記清除。
2. 複製
把內存空間劃分爲2個相等的區域,每次只使用一個區域。垃圾回收時,遍歷當前使用區域,把正在使用的對象複製到另外一個區域。
3. 標記——整理
將不再使用的對象標記,將正在使用的對象複製並整理到一塊,並將標記的內存刪除。
年輕代GC:
對象存活時間段,回收比較頻繁的區域,主要是Eden區域、FromSpace、ToSpace之間的copy。
老年代GC:
對象存活時間長,不經常回收的區域。
向老年代GC存放對象的幾種情況:
1. 設置一個閾值,當某個對象在FromSpace與ToSpace 之間的copy次數超過閾值後,就將該對象放入老年代GC。
2. 若某個對象大小超過年輕代設置的所允許的對象大小後,就將該對象直接放入老年代存放。