据我所知,它告诉CMS收集器在完整的GC发生时对旧版进行压缩。
但我想确认一下我是否理解正确(从各种来源拼凑而成):
一个完整的GC会暂停世界,收集并压缩旧世界(使用CMS的评论阶段的结果),然后收集年轻人,推广对象(如果有的话),并恢复世界。
此时,旧版本中可能存在浮动垃圾,UseCMSCompactAtFullCollection
是清理它们并再次压缩旧版本(基本上是旧版本的另一个GC)。因为无论如何世界都被停止了,所以可能需要做一些更紧凑的事情。
这个描述是否正确?我错过了任何重要的细节吗?感谢
答案 0 :(得分:0)
这张票是一个很好的答案:https://bugs.openjdk.java.net/browse/JDK-8027132
基本上,我的理解是正确的。当分配失败时,有一种前台CMS模式从后台模式中获取(因为系统无法继续,直到故障得到解决)。
-XX:+UseCMSCompactAtFullCollection
告诉前台模式使用serial old运行压缩。它对完整的GC没有影响。
在Java 8中已经弃用了前台模式(现在运行完整的GC是唯一的选项),标志也是如此。
<强>结论强>
旗帜已经死了,不要使用它。