您好,登錄后才能下訂單哦!
JVM垃圾回收算法解析
標(biāo)記-清除算法
該算法為最基礎(chǔ)的算法。它分為標(biāo)記和清除兩個(gè)階段,首先標(biāo)記出需要回收的對(duì)象,在標(biāo)記結(jié)束后,統(tǒng)一回收。該算法存在兩個(gè)問(wèn)題:一是效率問(wèn)題,標(biāo)記和清除過(guò)程效率都不太高,二是空間問(wèn)題,在執(zhí)行一次清除操作后,會(huì)存在好多不連續(xù)的內(nèi)存碎片,從而造成資源的浪費(fèi)??臻g碎片太多將會(huì)導(dǎo)致,當(dāng)在程序運(yùn)行過(guò)程中,需要分配較大對(duì)象的時(shí)候無(wú)法找到足夠的連續(xù)內(nèi)存將會(huì)導(dǎo)致下一次垃圾收集操作。
復(fù)制算法
該算法是在標(biāo)記-清除算法的基礎(chǔ)上出現(xiàn)的,它主要是為了提高效率,它將內(nèi)存區(qū)域分為兩個(gè)相等的塊,每次只使用其中的一塊,當(dāng)一塊用完了,就將還存活著的對(duì)象移動(dòng)到另外一塊上,然后將已存在的對(duì)象所占用的內(nèi)存釋放掉,這樣只是把其中的一塊內(nèi)存釋放掉,也不存在內(nèi)存碎片的問(wèn)題,但這種的算法的效率是建立在縮小內(nèi)存為原來(lái)的50%的前提上,它是用空間換空間來(lái)獲取的。
標(biāo)記-整理算法
復(fù)制算法存在一個(gè)問(wèn)題,當(dāng)對(duì)象存活率較高時(shí),它會(huì)頻繁的進(jìn)行復(fù)制操作,這樣也會(huì)導(dǎo)致效率低下。標(biāo)記-整理算法在前兩個(gè)算法的基礎(chǔ)上出現(xiàn),它的標(biāo)記過(guò)程和標(biāo)記-清除算法過(guò)程是一樣,只是它沒(méi)有對(duì)可回收的對(duì)象進(jìn)行回收,而是讓所有存活的對(duì)象向一測(cè)移動(dòng),然后清除掉邊界以外的內(nèi)存。
分代收集算法
當(dāng)前商業(yè)虛擬機(jī)的垃圾收集都采用分代收集算法,它是根據(jù)對(duì)象的生存周期將內(nèi)存分為幾部分,它一般分為新生代和老生代,在新生代,如果發(fā)現(xiàn)新生代中發(fā)現(xiàn)有大批對(duì)象死亡,少量對(duì)象存活,則采用復(fù)制算法,只需要犧牲少量的復(fù)制成本就可以完成本次垃圾收集,而老生代因?yàn)閷?duì)象存活率,沒(méi)有多余的空間為其做擔(dān)保,一般會(huì)使用標(biāo)記-清除算法或標(biāo)記-整理算法進(jìn)行處理。
作者:柯之夢(mèng)
來(lái)源:CSDN
原文:https://blog.csdn.net/yin4302008/article/details/85997091
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。