--- old/src/share/vm/memory/genCollectedHeap.cpp 2015-02-11 22:34:21.537474400 +0900 +++ new/src/share/vm/memory/genCollectedHeap.cpp 2015-02-11 22:34:21.376474400 +0900 @@ -322,9 +322,16 @@ } bool GenCollectedHeap::should_do_concurrent_full_gc(GCCause::Cause cause) { - return UseConcMarkSweepGC && - ((cause == GCCause::_gc_locker && GCLockerInvokesConcurrent) || - (cause == GCCause::_java_lang_system_gc && ExplicitGCInvokesConcurrent)); + if (!UseConcMarkSweepGC) { + return false; + } + + switch (cause) { + case GCCause::_gc_locker: return GCLockerInvokesConcurrent; + case GCCause::_java_lang_system_gc: + case GCCause::_dcmd_gc_run: return ExplicitGCInvokesConcurrent; + default: return false; + } } void GenCollectedHeap::do_collection(bool full,