garbage-collection - ParNew 和 CMS-初始相关

标签 garbage-collection jvm

我观察到当没有最近的 ParNew 并且如果 CMS-Initial-Mark 阶段开始时,CMS-Initial-Mark 阶段需要更长的时间来标记老年代的对象。

好的部分是大多数时候我发现 ParNew(可能是偶然的或者 JVM 在内部这样做)发生在 CMS-Initial-Mark 阶段之前,然后在老年代标记相同数量的对象,CMS 花费的时间更少。

想知道这种观察背后的推理。

注意:考虑到 CMS-Initial-Mark 阶段是 stop-the-world,最好尝试减少其持续时间。

最佳答案

通常 CMS 初始标记搭载在年轻集合上。 CMS 可以等待年轻集合一段时间(默认为 2 秒)。如果没有发生,初始标记将使用单线程扫描所有年轻空间,这可能非常耗时。

阅读 http://blog.ragozin.info/2011/06/understanding-gc-pauses-in-jvm-hotspots_02.html更多细节。

HotSpot 选项 –XX:CMSWaitDuration= 控制 CMS 初始标记可以延迟多长时间以搭载年轻集合。

关于garbage-collection - ParNew 和 CMS-初始相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10669482/

相关文章:

java - 以编程方式获取 Java 小程序的屏幕截图

java - 来自随机代码行的 NullPointerExceptions

java - 如何打印java对象的内存使用情况

Java: "used memory"图处频繁出现峰值

java - LogCat 垃圾邮件 GC_FOR_MALLOC 但只使用了 50% 的内存

java - G1 收集器每秒执行 50 次

java - 将 JVM 详细输出发送到 stderr 而不是 stdout

android - 带有 getView() 的 ListView 由于不断的 GC 而过度缓慢?

.net - 如何分析 .net 垃圾收集器?

java - 在这种情况下,java 堆会抖动到磁盘吗?