--- old/src/share/vm/gc/g1/g1ConcurrentMark.cpp 2016-07-21 12:32:30.535654048 +0200 +++ new/src/share/vm/gc/g1/g1ConcurrentMark.cpp 2016-07-21 12:32:30.446651369 +0200 @@ -416,11 +416,10 @@ double overall_cm_overhead = (double) MaxGCPauseMillis * marking_overhead / (double) GCPauseIntervalMillis; - double cpu_ratio = 1.0 / (double) os::processor_count(); + double cpu_ratio = 1.0 / os::initial_active_processor_count(); double marking_thread_num = ceil(overall_cm_overhead / cpu_ratio); double marking_task_overhead = - overall_cm_overhead / marking_thread_num * - (double) os::processor_count(); + overall_cm_overhead / marking_thread_num * os::initial_active_processor_count(); double sleep_factor = (1.0 - marking_task_overhead) / marking_task_overhead;