美文网首页
Hotspot JVM下,各种GC算法的组合

Hotspot JVM下,各种GC算法的组合

作者: 小菜Yang | 来源:发表于2017-11-29 11:33 被阅读0次

    Hotspot JVM实现包括了Serial GC, Parallel GC, CMS, G1 GC 4套算法组合。下面来讲一讲这些算法组合分别包括了哪些算法。

    1. Serial GC算法:Serial Young GC + Serial Old GC (实际上它是全局范围的Full GC),适用于小程序或低配置计算机系统;

    2. Parallel GC算法:(并行的)Parallel Young GC + PS MarkSweep GC / (并行的)Parallel Old GC(全局范围的Full GC),选PS MarkSweep GC 还是 Parallel Old GC 由参数UseParallelOldGC来控制,适用于对吞吐量敏感的应用;

    3. CMS算法:(并行的)ParNew(Young)GC + (并发的)CMS(Old)GC (piggyback on ParNew的结果/老生代存活下来的object只做记录,不做compaction)+ Full GC for CMS算法(应对核心的CMS GC某些时候的不赶趟,开销很大),适用于对延时敏感的应用;

    4. G1 GC:(并行的)Young GC +(并行的)mixed GC(新生代,再加上部分老生代)+ Full GC for G1 GC算法(应对G1 GC算法某些时候的不赶趟,开销很大)。G1 GC中开销较大的object marking算法部分是跟applicaiton一起并发的,其开始到结束时间上甚至可以跨越好几次Young GC。适用于延时和吞吐量都有要求的应用,调教相对前述3中GC算法组合为烦。

    上述组合描述已特别指出并行(parallel)还是并发(concurrent)。Hotspot JVM语境下,这两个概念是严格区分的。并行是指STW(stop-the-world)状态下的GC算法或部分算法的多线程运行;并发是指非STW状态下GC算法或部分算法跟applicaiton一起分享多个线程来运行。

    相关文章

      网友评论

          本文标题:Hotspot JVM下,各种GC算法的组合

          本文链接:https://www.haomeiwen.com/subject/cdjubxtx.html