上一篇 <<<JVM垃圾回收器的發(fā)展歷程及使用場景匯總
下一篇 >>>一張圖看懂CMS垃圾回收器的底層原理
串行Serial收集器
1.SerialGC
新生代:復制算法
使用方式:-XX:+UseSerialGC
特點:簡單高效,清理非常干凈馅扣,但CPU利用率高枢步,停頓時間較長
使用場景:桌面應用程序或堆內存空間很小的項目
2.SerialGC
老年代:標記壓縮(整理)算法
使用場景:主要用于Client模式暇唾,而在Server模式下有兩大用途:
(A)、在JDK1.5及之前采蚀,與Parallel Scavenge收集器搭配使用(JDK1.6有Parallel Old收集器可搭配)澎嚣;
(B)、作為CMS收集器的后備預案淋淀,在并發(fā)收集發(fā)生Concurrent Mode Failure時使用遥昧;
并行收集器
多個gc線程同時清理堆內存垃圾,處理器要多核才能發(fā)揮功效朵纷。
1.ParNew收集器(Serial收集器的多線程版本)
特點:除了多線程渠鸽,其余行為特點與Serial收集器一樣,主要用于新生代垃圾收集器柴罐。
使用場景:在Server模式下徽缚,ParNew收集器是一個非常重要的收集器,因為除Serial外革屠,目前只有它能與CMS收集器配合工作凿试;但在單個CPU環(huán)境中,不會比Serail收集器有更好的效果似芝,因為存在線程交互開銷那婉。
使用方式:-XX:+UseParNewGC
可通過-XX:ParallelGCThreads 限制線程數(shù)量(ParNew默認開啟的收集線程與CPU的數(shù)量相同)
"-XX:+UseConcMarkSweepGC":指定使用CMS后,會默認使用ParNew作為新生代收集器党瓮;
2.吞吐量Parallel Scavenge優(yōu)先收集器(PS收集器)
和parnew收集器一樣详炬,只是更注重了吞吐量。
特點:停頓時間短寞奸,回收效率高呛谜,對吞吐量要求高。
使用場景:高吞吐量為目標枪萄,減少垃圾收集時間隐岛,讓用戶代碼獲得更長運行時間,比如批量處理瓷翻、訂單處理聚凹、工資支付、科學計算的應用程序齐帚。
使用方式:-XX:UseAdaptiveSizePolicy:打開之后妒牙,就不需要設置細節(jié)【新生代大小(-Xmn)对妄,Edian湘今,survivor比例及(-XX:SurvivorRatio)晉升老年代年齡(-XX:PretenureSizeThreshold)等】虛擬機根據(jù)系統(tǒng)運行狀況,調整停頓時間饥伊,吞吐量象浑, GC自適應調節(jié)策略,區(qū)別parnew琅豆。
-XX:GCTimeRatio 吞吐量大小 (0,100)設置垃圾回收時間占總時間的比例愉豺, 默認最大99(即1%時間用于垃圾收集)。
-XX:MaxGCPauseMillis 垃圾回收器最大停頓時間茫因,數(shù)值越小則停頓時間少蚪拦,發(fā)生頻繁,也可能導致吞吐量的下降冻押。
3.Parallel Old收集器
老年代:標記整理算法
使用場景:JDK1.6及之后用來代替老年代的Serial Old收集器驰贷;特別是在Server模式,多CPU的情況下洛巢;
使用方式:-XX:+UseParallelOldGC
吞吐量與收集器關注點說明
(A)括袒、吞吐量(Throughput)
CPU用于運行用戶代碼的時間與CPU總消耗時間的比值;
即吞吐量=運行用戶代碼時間/(運行用戶代碼時間+垃圾收集時間)稿茉;
高吞吐量即減少垃圾收集時間锹锰,讓用戶代碼獲得更長的運行時間;
(B)漓库、垃圾收集器期望的目標(關注點)
- 停頓時間
停頓時間越短就適合需要與用戶交互的程序恃慧;
良好的響應速度能提升用戶體驗;- 吞吐量
高吞吐量則可以高效率地利用CPU時間渺蒿,盡快完成運算的任務痢士;
主要適合在后臺計算而不需要太多交互的任務;- 覆蓋區(qū)(Footprint)
在達到前面兩個目標的情況下茂装,盡量減少堆的內存空間怠蹂;
可以獲得更好的空間局部性;
相關文章鏈接:
<<<JVM整體內存結構的圖解少态,直觀明了
<<<javap命令查看對象信息及操作方法在JVM層的實現(xiàn)原理
<<<javap命令反查匯編指令匯總
<<<ClassLoader類加載器順序Demo測試與雙親委派源碼解讀
<<<自定義SPI和熱部署技術破壞類加載器的雙親委派模式
<<<JVM中對象如何完成空間分配和初始化工作
<<<JVM元空間(方法區(qū))和棧內存溢出原因及解決方案
<<<JVM堆內存溢出和內存泄露問題定位和解決
<<<JVM常見死鎖問題產生原因和多種診斷方式
<<<服務器CPU飆升為100%問題排查及如何避免
<<<JVM內存診斷命令和排查工具匯總
<<<JVM新生代老年代算法匯總圖解
<<<JVM垃圾回收不要手動System.gc的真正原因
<<<JVM垃圾回收引用計數(shù)法和根搜索算法圖解
<<<JVM垃圾回收STW(Stop-The-World)代碼演示
<<<JVM垃圾回收器的發(fā)展歷程及使用場景匯總
<<<一張圖看懂CMS垃圾回收器的底層原理
<<<G1能作為JDK9默認垃圾回收器的優(yōu)勢分析
<<<CMS和G1的漏標問題解決及三色標記算法圖解
<<<GC中新生代進入老年代的方式匯總
<<<GC常用日志參數(shù)配置及分析工具說明
<<<FullGC褥蚯、MinorGC、STW等常見問題如何解答
<<<JVM性能調優(yōu)的評估指標及調優(yōu)示例