1.1 --- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Fri Sep 26 17:48:10 2014 -0400 1.2 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Thu Oct 09 15:42:23 2014 +0200 1.3 @@ -737,7 +737,7 @@ 1.4 // Support for parallelizing survivor space rescan 1.5 if ((CMSParallelRemarkEnabled && CMSParallelSurvivorRemarkEnabled) || CMSParallelInitialMarkEnabled) { 1.6 const size_t max_plab_samples = 1.7 - ((DefNewGeneration*)_young_gen)->max_survivor_size()/MinTLABSize; 1.8 + ((DefNewGeneration*)_young_gen)->max_survivor_size() / plab_sample_minimum_size(); 1.9 1.10 _survivor_plab_array = NEW_C_HEAP_ARRAY(ChunkArray, ParallelGCThreads, mtGC); 1.11 _survivor_chunk_array = NEW_C_HEAP_ARRAY(HeapWord*, 2*max_plab_samples, mtGC); 1.12 @@ -795,6 +795,12 @@ 1.13 _inter_sweep_timer.start(); // start of time 1.14 } 1.15 1.16 +size_t CMSCollector::plab_sample_minimum_size() { 1.17 + // The default value of MinTLABSize is 2k, but there is 1.18 + // no way to get the default value if the flag has been overridden. 1.19 + return MAX2(ThreadLocalAllocBuffer::min_size() * HeapWordSize, 2 * K); 1.20 +} 1.21 + 1.22 const char* ConcurrentMarkSweepGeneration::name() const { 1.23 return "concurrent mark-sweep generation"; 1.24 }