引用計(jì)數(shù)法
無法處理循環(huán)引用的情況
標(biāo)記清除法
空間碎片問題,垃圾回收后的空間不是連續(xù)的,不連續(xù)的內(nèi)存空間的工作效率要低于連續(xù)的內(nèi)存空間
復(fù)制算法
其核心思想就是將內(nèi)存空間分為2塊,每次只使用其中一塊,在垃圾回收時(shí),將正在使用的內(nèi)存中的存留對(duì)象復(fù)制到未被使用的內(nèi)存塊中取,之后去清楚之前正在使用的內(nèi)存快中所有的兌現(xiàn)個(gè),反復(fù)去交換兩個(gè)內(nèi)存的角色,完成垃圾收集
標(biāo)記壓縮法
標(biāo)記壓縮法在標(biāo)記清楚法基礎(chǔ)之上做了優(yōu)化,把存活的對(duì)象壓縮到內(nèi)存一端,而后進(jìn)行垃圾清理。(java中老年代使用的就是壓縮標(biāo)記法)
分代算法
就是根據(jù)對(duì)象的特點(diǎn)把內(nèi)存分為N塊,而后根據(jù)每個(gè)內(nèi)存的特點(diǎn)使用不同的算法,對(duì)于新生代和老年代來說,新生代回收頻率很高,但是每次回收耗時(shí)都很短,而老年代回收頻率較低,但是會(huì)相對(duì)較長(zhǎng),所以應(yīng)該盡量減少老年代的GC
分區(qū)算法
其主要就是將整個(gè)內(nèi)存分為N多個(gè)小的獨(dú)立空間,每個(gè)小空間都可以獨(dú)立使用,這樣細(xì)粒度的控制一次回收都少個(gè)小空間和那些個(gè)小空間,而不是對(duì)整個(gè)空間進(jìn)行GC,從而提升性能,減少GC的停頓時(shí)間
垃圾回收時(shí)的停頓現(xiàn)象
垃圾回收器的任務(wù)是識(shí)別和回收垃圾對(duì)象進(jìn)行內(nèi)存清理,為了讓垃圾回收器可以高效的執(zhí)行,大部分情況下,會(huì)要求系統(tǒng)進(jìn)入一個(gè)停頓的狀態(tài),停頓的目的是終止所有應(yīng)用線程。只有這樣系統(tǒng)才不會(huì)有新的垃圾產(chǎn)生。同時(shí)停頓保證了系統(tǒng)狀態(tài)在某一時(shí)刻的一致性。