您好,登錄后才能下訂單哦!
分代算法:根據各個年代特點選用不用垃圾回收算法
新生代:采用復制算法
老年代:使用標記-整理或標記-清除算法
并行:垃圾收集的多線程同時進行
并發:垃圾收集的多線程和應用的多線程同時進行
回收器
1,Seral/Serial Old : 單線程
2,ParNew: 和Seral基本沒區別,多線程
3,Parallel Scavenge(ParallerGC)/Parallel Old : 關注吞吐量的收集器,主要用于后臺運算而不需要太多交互的任務。
4,CMS:一種最短停頓時間的收集器。使用標記清除算法
5,G1:jdk1.9以后推薦使用,跨越的新生代和老年代。使用標記整理和化整為零
所有新生代都是用復制算法,老年代 標記整理和標記清除
-XX:+UseConcMarkSweepGC,應用于B/S系統服務器,重視服務的響應速度,希望系統停頓時間最短,給用戶較好的體驗。
垃圾回收過程:
-XX:+UseG1GC
內部布局改變
G1把堆劃分多個大小相等的獨立區域(Region),新生代和老年代不再物理隔離。
算法:標記-整理(humongous)和復制回收算法(survivor)。
GC模式
Young GC(回收Eden、Survivor區):選定所有年輕代的Region,通過控制年輕代個數,來控制young GC 的時間開銷(復制回收算法)
Mixed GC(全部區域回收):不但選定年輕代Region還要選定老年代收益高的若干Region,進行釋放。Mixed GC 不是Full GC,如果Mixed GC 跟不上程序分配內存速度,就會使用serial odl GC(Full GC)來收集整個GC heap。4G1不是Full GC。
全局并發標記
1, 初始標記:僅僅標記一下GC Roots能直接關聯的對象,此階段需要停頓線程(STW),但耗時很短。
2, 并發標記:從GC Roots開始對堆進行可達性分析,找到活對象,耗時很長,但與用戶程序并行
3,最終標記:為了修正并發標記階段因用戶程序繼續而導致標記產生變動的那一部分標記記錄。需要停頓線程(STW),但是可并行執行。
4,篩選回收:首先對各個Region中的回收價值和成本進行排序,根據用戶所期望的GC停頓時間來指定回收計劃。此階段與用戶并行一起并行執行,但是因為回收一部分Region,時間是用戶可控的,而且停頓用戶線程能大幅度提交收集效率。
特點
1, 空間整理:不會產生內存碎片。算法為標記-整理和復制回收算法。
2, 可預測的停頓:G1,刷選不是經常使用,而是刷選那些回收效率比較高的區域(回收回報比比較高)。總共1000個區域,一個區域10m * 篩選常用的100個區域 急需回收。
Stop The World
GC收集器和GC優化的目標就是盡可能的減少STW的時間和次數。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。