引用計數法:對象每被引用一次就+1,為0時回收,速度很快但是無法識別循環引用
標記清除法:遍歷所有對象,標記沒被引用的,然后統一清除。缺點是效率低、清理后內存不連續。
復制清除法:將內存分為兩塊,其中一塊寫滿后,遍歷對象標記有用的對象復制到另一塊,然后把這一塊清理,這樣復制的內容很少而且內存始終連續,缺點是始終需要有一塊內存空出來用于復制。
標記整理法:遍歷出有用的對象,將這些對象全都向一端移動,然后清理其它空間,一樣能騰出連續的內存,但是移動對象的成本比復制大得多。
GC采用分代收集法:年輕代采用復制清除法,每當eden滿時,就遍歷出eden和幸存者1區的有用對象復制到幸存者2區,然后清空重新寫起。因此無論何時一定有一個幸存者區是空的。老年代由于有用的對象很多所以復制成本高,采用標記整理法減少復制。