为什么-XX:+ ExplicitGCInvokesConcurrent是使用G1收集器时的默认值?

时间:2015-11-20 16:58:20

标签: java jvm-hotspot g1gc

在内存数据库的上下文中,我们将堆外内存与热点的G1收集器结合使用。

但是,当堆外内存使用量达到MaxDirectMemorySize时,JDK代码使用System.gc()触发完整GC。这导致世界GC的长期和痛苦的停止,似乎也把所有当前的现场设置放在了旧的,绕过了幸存者(从而增加了裙带关系问题)。设置-XX:+ExplicitGCInvokesConcurrent时不会发生这种情况:GC更快,尊重幸存者。

由于System.gc()是JDK内部使用的内容,为什么默认情况下此选项不在hotspot中?这面旗帜是否会引发政治或实际问题?或者只是出于兼容性原因?有没有人有在生产环境中使用此选项的经验,并遇到过它的问题?

0 个答案:

没有答案