串行回收:JDK1.5 前的默認算法,執(zhí)行垃圾回收時程序停止時間較長,缺點是只有一個線程
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、孝南網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5頁面制作、成都做商城網(wǎng)站、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為孝南等各大城市提供網(wǎng)站開發(fā)制作服務。
并行回收:多個線程執(zhí)行垃圾回收,適合吞吐量系統(tǒng),回收時系統(tǒng)停止運行
最古老的、最穩(wěn)定的的收集器,可能產(chǎn)生較長的停頓,僅適用單線程收集,新生代、老年代均采用串行回收,新生代采用賦值算法,老年代采用標記->壓縮算法,垃圾收集過程中會 Stop The World(服務暫停)
特點:CPU利用率最高,停頓時間即用戶等待時間比較長
適用場景:小型應用
-XX:+UseSerialGC 可以使用串行垃圾回收器
多線程版本 Serial,新生代并行,老年代串行
-XX:+UseParNewGC 使用 ParNew 收集器
-XX:ParallelGCThreads 限制線程數(shù)量
Parallel Scavenge 收集器類似 ParNew 收集器,Parallel 收集器更關(guān)注系統(tǒng)的吞吐量,可以通過參數(shù)來打開自適應調(diào)節(jié)策略,虛擬機會根據(jù)當前系統(tǒng)的運行情況收集性能監(jiān)控信息,動態(tài)調(diào)整這些參數(shù)以提供最合適的停頓時間或最大的吞吐量,也可以通過參數(shù)控制GC的時間不大于多少毫秒或者比例,新生代復制算法,老年代標記-壓縮
采用多線程來通過掃描并壓縮堆
特點:停頓時間短,回收效率高,對吞吐量要求高
適用場景:大型應用,科學計算,大規(guī)模數(shù)據(jù)采集等
XX:+USeParNewGC 打開并發(fā)標記掃描垃圾回收器
CMS 為降低延遲而生,通過盡可能的并行執(zhí)行垃圾回收的幾個階段來把延遲控制到最低,CMS 是老年代收集器,一般情況下采用 ParNew 來配合執(zhí)行新生代的回收
收集階段:
初始標記
并發(fā)標記:
預清理
可中斷預清理
最終標記
并發(fā)清除
其中初始標記、重新標記這兩個步驟仍然需要 Stop The World,初始標記僅僅只是標記一下 GC Roots 能直接關(guān)聯(lián)到的對象,速度很快,并發(fā)標記階段就是進行 GC Roots Tracing 的過程,而重新標記階段則是為了修正并發(fā)標記期間,因用戶程序繼續(xù)運作而導致標記產(chǎn)生變動的那一部分對象的標記記錄,這個階段的停頓時間一般會比初始標記階段稍長一些,但遠比并發(fā)標記的時間短
由于整個過程中耗時最長的并發(fā)標記和并發(fā)清除過程中,收集器線程都可以與用戶線程一起工作,所以總體上來說,CMS收集器的內(nèi)存回收過程是與用戶線程一起并發(fā)地執(zhí)行
特點:響應時間優(yōu)先,減少垃圾收集停頓時間
優(yōu)點:并發(fā)采集,低停頓
缺點:產(chǎn)生大量空間碎片、并發(fā)階段會降低吞吐量
-XX:+UseConcMarkSweepGC
在G1中,堆被劃分成 許多個連續(xù)的區(qū)域(region)。采用G1算法進行回收,吸收了CMS收集器特點
特點:
支持很大的堆,高吞吐量
支持多 CPU 垃圾回收
在主線程暫停時,使用并行回收
-XX:+UseG1GC 使用G1垃圾回收器
使用 Jmeter 壓力測試工具測試吞吐量以測試幾種收集器