JVM垃圾收集算法

引用計(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í)刻的一致性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容