4

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

当调用 System.gc() 时,是否有任何等同于让 JVM 使用 G1 收集器的方法?默认情况下,似乎使用标准并行收集器。

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

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

4

2 回答 2

4

这个错误帖子

G1 现在观察 ExplicitGCInvokesConcurrent

还有这个链接可以确认它。

AFAIK 没有特殊命令,Oracle JVM 选项列表和这个更长的列表都没有引用此类命令选项。

于 2012-06-19T11:53:43.453 回答
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 {产品}

于 2015-01-28T08:02:37.690 回答