它们是年轻代垃圾收集的算法。
第二个(UseParNewGC)通过并发的终身垃圾回收自动激活(请参阅 Java Concurrent and Parallel GC )但是,这两种并行算法之间有区别吗?
原文由 fglez 发布,翻译遵循 CC BY-SA 4.0 许可协议
它们是年轻代垃圾收集的算法。
第二个(UseParNewGC)通过并发的终身垃圾回收自动激活(请参阅 Java Concurrent and Parallel GC )但是,这两种并行算法之间有区别吗?
原文由 fglez 发布,翻译遵循 CC BY-SA 4.0 许可协议
UseParNewGC 年轻代复制收集器的并行版本与并发收集器一起使用(即,如果 -XX:+ UseConcMarkSweepGC 在命令行上使用,那么标志 UseParNewGC 也被设置为 true,如果它没有在命令行上明确设置的话).
也许最容易理解的方法是 Alexey Ragozin 提出的垃圾收集算法的组合
<table border="1" style="width:100%">
<tr>
<td align="center">Young collector</td>
<td align="center">Old collector</td>
<td align="center">JVM option</td>
</tr>
<tr>
<td>Serial (DefNew)</td>
<td>Serial Mark-Sweep-Compact</td>
<td>-XX:+UseSerialGC</td>
</tr>
<tr>
<td>Parallel scavenge (PSYoungGen)</td>
<td>Serial Mark-Sweep-Compact (PSOldGen)</td>
<td>-XX:+UseParallelGC</td>
</tr>
<tr>
<td>Parallel scavenge (PSYoungGen)</td>
<td>Parallel Mark-Sweep-Compact (ParOldGen)</td>
<td>-XX:+UseParallelOldGC</td>
</tr>
<tr>
<td>Serial (DefNew)</td>
<td>Concurrent Mark Sweep</td>
<td>
<p>-XX:+UseConcMarkSweepGC</p>
<p>-XX:-UseParNewGC</p>
</td>
</tr>
<tr>
<td>Parallel (ParNew)</td>
<td>Concurrent Mark Sweep</td>
<td>
<p>-XX:+UseConcMarkSweepGC</p>
<p>-XX:+UseParNewGC</p>
</td>
</tr>
<tr>
<td colspan="2">G1</td>
<td>-XX:+UseG1GC</td>
</tr>
</table>
结论:
原文由 Ivan Herlambang 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
经过大量搜索,我找到的最佳解释来自 本月问题中的 Java Performance Tuning 网站:1.4.1 垃圾收集算法,2003 年 1 月 29 日
从这些信息来看,主要区别(除了 CMS 合作)似乎是 UseParallelGC 支持 人体工程学,而 UseParNewGC 不支持。