JVM中也有并發(fā)GC,CMS機(jī)制

當(dāng)初看文檔的時(shí)候,了解到.net CLR中的Background GC機(jī)制,它類似于并發(fā)GC,當(dāng)使得在做GC動(dòng)作是,能夠同時(shí)進(jìn)行內(nèi)存分配。這種機(jī)制顯著的減少的stop the world這種事情,使得GC的干擾最小化。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),麟游企業(yè)網(wǎng)站建設(shè),麟游品牌網(wǎng)站建設(shè),網(wǎng)站定制,麟游網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,麟游網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

當(dāng)初認(rèn)為.net這招非常優(yōu)秀,足以鄙視JAVA,前幾天看JVM的書,發(fā)現(xiàn)JVM也有類似的機(jī)制,但是不叫后臺(tái)線程,而是稱作CMS(Concurrent Mark Sweep)。

從名字就可以看出并發(fā)標(biāo)記清除的意思。CMS機(jī)制僅針對(duì)老年代上的垃圾(.net的后臺(tái)GC只在第2代上運(yùn)行。年輕代上的垃圾由其他回收算法收集),它運(yùn)行時(shí),分成4個(gè)步驟:

初始標(biāo)記,并發(fā)標(biāo)記,重新標(biāo)記和最后異步并發(fā)清除,其中初始標(biāo)記和重新標(biāo)記仍然會(huì)stop the world。從網(wǎng)上扒一張圖,可以看到

JVM中也有并發(fā)GC,CMS機(jī)制

初始標(biāo)記其實(shí)就是標(biāo)記root對(duì)象,速度很快,而并發(fā)標(biāo)記,就是順著root對(duì)象的引用鏈開始順藤摸瓜的做標(biāo)記,并發(fā)的進(jìn)行標(biāo)記,可以看到,此處GC線程和用戶線程是同時(shí)運(yùn)行的。

重新標(biāo)記其實(shí)是對(duì)并發(fā)標(biāo)記的一個(gè)補(bǔ)充修正,因?yàn)橛行?duì)象在并發(fā)標(biāo)記后,又被釋放掉或者又被重新引用,導(dǎo)致之前的標(biāo)記不準(zhǔn)確,重新標(biāo)記一次。重新標(biāo)記這個(gè)動(dòng)作的速度是非??斓?。接著并發(fā)清理時(shí),又是和用戶線程同時(shí)進(jìn)行。因此,相比非并發(fā)的處理,這種機(jī)制有助于減少GC對(duì)用戶程序的影響。

不過CMS也有缺點(diǎn),它雖然不會(huì)stop the world,但是會(huì)占用CPU資源,會(huì)拖慢程序。還有一個(gè)缺點(diǎn)CMS收集器無法處理浮動(dòng)垃圾,可能出現(xiàn)“Concurrent Mode Failure”失?。ㄖ劣跒槭裁磿?huì)出現(xiàn)這種失敗,書中也沒說的很清楚)。這種失敗導(dǎo)致另一次Full GC的產(chǎn)生。這招反而會(huì)影響性能。最后一個(gè)缺點(diǎn)是大多數(shù)標(biāo)記清除算法共有的缺點(diǎn),就是在回收后,可能會(huì)導(dǎo)致大量的碎片空間,當(dāng)分配大對(duì)象的時(shí)候,但碎片太多找不到連續(xù)的大空間,也會(huì)導(dǎo)致一次Full GC。

分享題目:JVM中也有并發(fā)GC,CMS機(jī)制
新聞來源:http://muchs.cn/article34/ghghpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、微信公眾號(hào)、響應(yīng)式網(wǎng)站、搜索引擎優(yōu)化、虛擬主機(jī)ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司