JVM垃圾回收算法与收集器全解析
JVM垃圾回收算法与垃圾收集器详解
垃圾回收算法
标记-清除算法(Mark-Sweep) 该算法分为标记和清除两个阶段。标记阶段遍历所有对象,标记出存活对象;清除阶段回收未被标记的对象。缺点是会产生内存碎片,影响大对象分配效率。
标记-整理算法(Mark-Compact) 在标记阶段与标记-清除算法相同,但在清除阶段会将存活对象向内存一端移动,然后清理边界外的内存。解决了内存碎片问题,但移动对象会增加开销。
复制算法(Copying) 将内存分为两块,每次只使用其中一块。垃圾回收时,将存活对象复制到另一块内存中,然后清空当前内存块。效率高且无碎片,但内存利用率降低。
分代收集算法(Generational) 基于对象生命周期特点,将堆内存分为新生代和老年代。新生代使用复制算法,老年代使用标记-清除或标记-整理算法。这是现代JVM的主流实现方式。
垃圾收集器实现
Serial收集器 单线程工作的收集器,进行垃圾回收时会暂停所有用户线程(Stop-The-World)。采用复制算法处理新生代,标记-整理算法处理老年代。适用于客户端模式或资源受限环境。
Parallel收集器(Throughput Collector) Serial收集器的多线程版本,使用多线程进行垃圾回收。目标是通过并行化提高吞吐量,适合后台运算且对交互响应要求不高的场景。
ParNew收集器 Parallel收集器的改进版,专门优化了与CMS收集器的配合。仅作用于新生代,采用多线程复制算法。是CMS收集器默认的新生代搭档。
CMS收集器(Concurrent Mark-Sweep) 以获取最短回收停顿时间为目标的收集器。采用标记-清除算法,分为四个阶段:
- 初始标记(短暂STW)
- 并发标记
- 重新标记(短暂STW)
- 并发清除
允许垃圾回收线程与用户线程并发执行,适合对延迟敏感的应用。但会产生内存碎片,且并发阶段会占用CPU资源。
性能考量与选择建议
吞吐量优先场景 Parallel收集器组合(新生代Parallel+老年代Parallel Old)适合批处理、科学计算等场景。通过并行化最大化利用系统资源完成计算任务。
低延迟优先场景 ParNew+CMS组合适合Web服务等交互式应用。CMS通过并发降低停顿时间,但需要预留足够内存应对并发失败时的Full GC。
内存限制严格场景 Serial收集器在资源受限环境(如嵌入式系统)仍有价值。虽然停顿时间长,但内存开销和实现复杂度最低。
参数调优方向
- 新生代大小:通过-Xmn指定,影响Minor GC频率
- 晋升阈值:-XX:MaxTenuringThreshold控制对象晋升老年代年龄
- CMS触发阈值:-XX:CMSInitiatingOccupancyFraction设置老年代使用率触发百分比
- 并行线程数:-XX:ParallelGCThreads调节并行收集器工作线程数
现代JVM已发展出更先进的G1、ZGC等收集器,但传统收集器在特定场景仍具优势。理解这些基础收集器的工作原理,是掌握高级调优技术的前提。
BbS.okapop174.sbs/PoSt/1122_507603.HtM
BbS.okapop175.sbs/PoSt/1122_241677.HtM
BbS.okapop176.sbs/PoSt/1122_871272.HtM
BbS.okapop177.sbs/PoSt/1122_128330.HtM
BbS.okapop178.sbs/PoSt/1122_489026.HtM
BbS.okapop179.sbs/PoSt/1122_484424.HtM
BbS.okapop180.sbs/PoSt/1122_434524.HtM
BbS.okapop181.sbs/PoSt/1122_854368.HtM
BbS.okapop182.sbs/PoSt/1122_690874.HtM
BbS.okapop183.sbs/PoSt/1122_043323.HtM
BbS.okapop174.sbs/PoSt/1122_211236.HtM
BbS.okapop175.sbs/PoSt/1122_976617.HtM
BbS.okapop176.sbs/PoSt/1122_381863.HtM
BbS.okapop177.sbs/PoSt/1122_278413.HtM
BbS.okapop178.sbs/PoSt/1122_869618.HtM
BbS.okapop179.sbs/PoSt/1122_894496.HtM
BbS.okapop180.sbs/PoSt/1122_280563.HtM
BbS.okapop181.sbs/PoSt/1122_878671.HtM
BbS.okapop182.sbs/PoSt/1122_633106.HtM
BbS.okapop183.sbs/PoSt/1122_963981.HtM
BbS.okapop174.sbs/PoSt/1122_580268.HtM
BbS.okapop175.sbs/PoSt/1122_141118.HtM
BbS.okapop176.sbs/PoSt/1122_235977.HtM
BbS.okapop177.sbs/PoSt/1122_820641.HtM
BbS.okapop178.sbs/PoSt/1122_814412.HtM
BbS.okapop179.sbs/PoSt/1122_150325.HtM
BbS.okapop180.sbs/PoSt/1122_803259.HtM
BbS.okapop181.sbs/PoSt/1122_029995.HtM
BbS.okapop182.sbs/PoSt/1122_520522.HtM
BbS.okapop183.sbs/PoSt/1122_268573.HtM
BbS.okapop174.sbs/PoSt/1122_655673.HtM
BbS.okapop175.sbs/PoSt/1122_161062.HtM
BbS.okapop176.sbs/PoSt/1122_618046.HtM
BbS.okapop177.sbs/PoSt/1122_176644.HtM
BbS.okapop178.sbs/PoSt/1122_526560.HtM
BbS.okapop179.sbs/PoSt/1122_428738.HtM
BbS.okapop180.sbs/PoSt/1122_114342.HtM
BbS.okapop181.sbs/PoSt/1122_749708.HtM
BbS.okapop182.sbs/PoSt/1122_175790.HtM
BbS.okapop183.sbs/PoSt/1122_396903.HtM
BbS.okapop184.sbs/PoSt/1122_064786.HtM
BbS.okapop185.sbs/PoSt/1122_890306.HtM
BbS.okapop186.sbs/PoSt/1122_856526.HtM
BbS.okapop187.sbs/PoSt/1122_942385.HtM
BbS.okapop188.sbs/PoSt/1122_258434.HtM
BbS.okapop190.sbs/PoSt/1122_247444.HtM
BbS.okapop191.sbs/PoSt/1122_071426.HtM
BbS.okapop192.sbs/PoSt/1122_584172.HtM
BbS.okapop193.sbs/PoSt/1122_577696.HtM
BbS.okapop194.sbs/PoSt/1122_779093.HtM
BbS.okapop184.sbs/PoSt/1122_041224.HtM
BbS.okapop185.sbs/PoSt/1122_893587.HtM
BbS.okapop186.sbs/PoSt/1122_905737.HtM
BbS.okapop187.sbs/PoSt/1122_335166.HtM
BbS.okapop188.sbs/PoSt/1122_378034.HtM
BbS.okapop190.sbs/PoSt/1122_731368.HtM
BbS.okapop191.sbs/PoSt/1122_955256.HtM
BbS.okapop192.sbs/PoSt/1122_972114.HtM
BbS.okapop193.sbs/PoSt/1122_846501.HtM
BbS.okapop194.sbs/PoSt/1122_360026.HtM
BbS.okapop184.sbs/PoSt/1122_865070.HtM
BbS.okapop185.sbs/PoSt/1122_368325.HtM
BbS.okapop186.sbs/PoSt/1122_247903.HtM
BbS.okapop187.sbs/PoSt/1122_098728.HtM
BbS.okapop188.sbs/PoSt/1122_291281.HtM
BbS.okapop190.sbs/PoSt/1122_113475.HtM
BbS.okapop191.sbs/PoSt/1122_219068.HtM
BbS.okapop192.sbs/PoSt/1122_983035.HtM
BbS.okapop193.sbs/PoSt/1122_784561.HtM
BbS.okapop194.sbs/PoSt/1122_740856.HtM
BbS.okapop184.sbs/PoSt/1122_694983.HtM
BbS.okapop185.sbs/PoSt/1122_494452.HtM
BbS.okapop186.sbs/PoSt/1122_535788.HtM
BbS.okapop187.sbs/PoSt/1122_559346.HtM
BbS.okapop188.sbs/PoSt/1122_648570.HtM
BbS.okapop190.sbs/PoSt/1122_683148.HtM
BbS.okapop191.sbs/PoSt/1122_306400.HtM
BbS.okapop192.sbs/PoSt/1122_349936.HtM
BbS.okapop193.sbs/PoSt/1122_474147.HtM
BbS.okapop194.sbs/PoSt/1122_588133.HtM