什么是-XX + UseCMSCompactAtFullCollection的确切用法?

时间:2015-12-29 00:50:32

标签: java garbage-collection concurrent-mark-sweep

据我所知,它告诉CMS收集器在完整的GC发生时对旧版进行压缩。

但我想确认一下我是否理解正确(从各种来源拼凑而成):

一个完整的GC会暂停世界,收集并压缩旧世界(使用CMS的评论阶段的结果),然后收集年轻人,推广对象(如果有的话),并恢复世界。

此时,旧版本中可能存在浮动垃圾,UseCMSCompactAtFullCollection是清理它们并再次压缩旧版本(基本上是旧版本的另一个GC)。因为无论如何世界都被停止了,所以可能需要做一些更紧凑的事情。

这个描述是否正确?我错过了任何重要的细节吗?感谢

1 个答案:

答案 0 :(得分:0)

这张票是一个很好的答案:https://bugs.openjdk.java.net/browse/JDK-8027132

基本上,我的理解是正确的。当分配失败时,有一种前台CMS模式从后台模式中获取(因为系统无法继续,直到故障得到解决)。

-XX:+UseCMSCompactAtFullCollection告诉前台模式使用serial old运行压缩。它对完整的GC没有影响。

在Java 8中已经弃用了前台模式(现在运行完整的GC是唯一的选项),标志也是如此。

<强>结论

旗帜已经死了,不要使用它。