您好,登錄后才能下訂單哦!
分代算法:根據(jù)各個(gè)年代特點(diǎn)選用不用垃圾回收算法
新生代:采用復(fù)制算法
老年代:使用標(biāo)記-整理或標(biāo)記-清除算法
并行:垃圾收集的多線程同時(shí)進(jìn)行
并發(fā):垃圾收集的多線程和應(yīng)用的多線程同時(shí)進(jìn)行
回收器
1,Seral/Serial Old : 單線程
2,ParNew: 和Seral基本沒(méi)區(qū)別,多線程
3,Parallel Scavenge(ParallerGC)/Parallel Old : 關(guān)注吞吐量的收集器,主要用于后臺(tái)運(yùn)算而不需要太多交互的任務(wù)。
4,CMS:一種最短停頓時(shí)間的收集器。使用標(biāo)記清除算法
5,G1:jdk1.9以后推薦使用,跨越的新生代和老年代。使用標(biāo)記整理和化整為零
所有新生代都是用復(fù)制算法,老年代 標(biāo)記整理和標(biāo)記清除
-XX:+UseConcMarkSweepGC,應(yīng)用于B/S系統(tǒng)服務(wù)器,重視服務(wù)的響應(yīng)速度,希望系統(tǒng)停頓時(shí)間最短,給用戶較好的體驗(yàn)。
垃圾回收過(guò)程:
-XX:+UseG1GC
內(nèi)部布局改變
G1把堆劃分多個(gè)大小相等的獨(dú)立區(qū)域(Region),新生代和老年代不再物理隔離。
算法:標(biāo)記-整理(humongous)和復(fù)制回收算法(survivor)。
GC模式
Young GC(回收Eden、Survivor區(qū)):選定所有年輕代的Region,通過(guò)控制年輕代個(gè)數(shù),來(lái)控制young GC 的時(shí)間開(kāi)銷(xiāo)(復(fù)制回收算法)
Mixed GC(全部區(qū)域回收):不但選定年輕代Region還要選定老年代收益高的若干Region,進(jìn)行釋放。Mixed GC 不是Full GC,如果Mixed GC 跟不上程序分配內(nèi)存速度,就會(huì)使用serial odl GC(Full GC)來(lái)收集整個(gè)GC heap。4G1不是Full GC。
全局并發(fā)標(biāo)記
1, 初始標(biāo)記:僅僅標(biāo)記一下GC Roots能直接關(guān)聯(lián)的對(duì)象,此階段需要停頓線程(STW),但耗時(shí)很短。
2, 并發(fā)標(biāo)記:從GC Roots開(kāi)始對(duì)堆進(jìn)行可達(dá)性分析,找到活對(duì)象,耗時(shí)很長(zhǎng),但與用戶程序并行
3,最終標(biāo)記:為了修正并發(fā)標(biāo)記階段因用戶程序繼續(xù)而導(dǎo)致標(biāo)記產(chǎn)生變動(dòng)的那一部分標(biāo)記記錄。需要停頓線程(STW),但是可并行執(zhí)行。
4,篩選回收:首先對(duì)各個(gè)Region中的回收價(jià)值和成本進(jìn)行排序,根據(jù)用戶所期望的GC停頓時(shí)間來(lái)指定回收計(jì)劃。此階段與用戶并行一起并行執(zhí)行,但是因?yàn)榛厥找徊糠諶egion,時(shí)間是用戶可控的,而且停頓用戶線程能大幅度提交收集效率。
特點(diǎn)
1, 空間整理:不會(huì)產(chǎn)生內(nèi)存碎片。算法為標(biāo)記-整理和復(fù)制回收算法。
2, 可預(yù)測(cè)的停頓:G1,刷選不是經(jīng)常使用,而是刷選那些回收效率比較高的區(qū)域(回收回報(bào)比比較高)??偣?000個(gè)區(qū)域,一個(gè)區(qū)域10m * 篩選常用的100個(gè)區(qū)域 急需回收。
Stop The World
GC收集器和GC優(yōu)化的目標(biāo)就是盡可能的減少STW的時(shí)間和次數(shù)。
免責(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)容。