调用System.gc()时可以使用G1垃圾收集器

时间:2012-06-12 14:39:49

标签: java garbage-collection jvm

在Hotspot中,当调用System.gc()时,我可以通过在命令行中添加-XX:+ ExplicitGCInvokesConcurrent选项来使用Concurrent-Mark-Sweep收集器。

当调用System.gc()时,有没有相当于使JVM使用G1收集器的东西?默认情况下,似乎使用标准并行收集器。

我猜不是,但我只是想知道是否有人可以证实。

别担心!我不打算自己调用System.gc(),但有些JVM(直接缓冲区,RMI)依赖于它被调用。

2 个答案:

答案 0 :(得分:3)

来自this bug post

  

G1现在观察ExplicitGCInvokesConcurrent

还有这个link确认了它。

AFAIK没有特殊命令,the list of Oracle JVM optionslonger list都没有引用这样的命令选项。

答案 1 :(得分:0)

bool G1CollectedHeap::should_do_concurrent_full_gc(GCCause::Cause cause) {
  switch (cause) {
    case GCCause::_gc_locker:               return GCLockerInvokesConcurrent;
    case GCCause::_java_lang_system_gc:     return ExplicitGCInvokesConcurrent;
    case GCCause::_g1_humongous_allocation: return true;
    default:                                return false;

}     }

bool ExplicitGCInvokesConcurrent = false {product}