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