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