溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JVM垃圾回收算法解析

發(fā)布時(shí)間:2020-05-27 08:52:31 來(lái)源:網(wǎng)絡(luò) 閱讀:219 作者:柯之夢(mèng) 欄目:軟件技術(shù)

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)附上博文鏈接!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI