在Hotspot中,当调用System.gc()时,我可以通过在命令行中添加-XX:+ ExplicitGCInvokesConcurrent选项来使用Concurrent-Mark-Sweep收集器。
当调用System.gc()时,有没有相当于使JVM使用G1收集器的东西?默认情况下,似乎使用标准并行收集器。
我猜不是,但我只是想知道是否有人可以证实。
别担心!我不打算自己调用System.gc(),但有些JVM(直接缓冲区,RMI)依赖于它被调用。
答案 0 :(得分:3)
G1现在观察ExplicitGCInvokesConcurrent
还有这个link确认了它。
AFAIK没有特殊命令,the list of Oracle JVM options和longer 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}