src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp

changeset 7470
060cdf93040c
parent 6719
8e20ef014b08
child 7476
c2844108a708
equal deleted inserted replaced
7469:01dcaba9b3f3 7470:060cdf93040c
735 assert(_eden_chunk_array != NULL || _eden_chunk_capacity == 0, "Error"); 735 assert(_eden_chunk_array != NULL || _eden_chunk_capacity == 0, "Error");
736 736
737 // Support for parallelizing survivor space rescan 737 // Support for parallelizing survivor space rescan
738 if ((CMSParallelRemarkEnabled && CMSParallelSurvivorRemarkEnabled) || CMSParallelInitialMarkEnabled) { 738 if ((CMSParallelRemarkEnabled && CMSParallelSurvivorRemarkEnabled) || CMSParallelInitialMarkEnabled) {
739 const size_t max_plab_samples = 739 const size_t max_plab_samples =
740 ((DefNewGeneration*)_young_gen)->max_survivor_size()/MinTLABSize; 740 ((DefNewGeneration*)_young_gen)->max_survivor_size() / plab_sample_minimum_size();
741 741
742 _survivor_plab_array = NEW_C_HEAP_ARRAY(ChunkArray, ParallelGCThreads, mtGC); 742 _survivor_plab_array = NEW_C_HEAP_ARRAY(ChunkArray, ParallelGCThreads, mtGC);
743 _survivor_chunk_array = NEW_C_HEAP_ARRAY(HeapWord*, 2*max_plab_samples, mtGC); 743 _survivor_chunk_array = NEW_C_HEAP_ARRAY(HeapWord*, 2*max_plab_samples, mtGC);
744 _cursor = NEW_C_HEAP_ARRAY(size_t, ParallelGCThreads, mtGC); 744 _cursor = NEW_C_HEAP_ARRAY(size_t, ParallelGCThreads, mtGC);
745 if (_survivor_plab_array == NULL || _survivor_chunk_array == NULL 745 if (_survivor_plab_array == NULL || _survivor_chunk_array == NULL
791 791
792 NOT_PRODUCT(_overflow_counter = CMSMarkStackOverflowInterval;) 792 NOT_PRODUCT(_overflow_counter = CMSMarkStackOverflowInterval;)
793 _gc_counters = new CollectorCounters("CMS", 1); 793 _gc_counters = new CollectorCounters("CMS", 1);
794 _completed_initialization = true; 794 _completed_initialization = true;
795 _inter_sweep_timer.start(); // start of time 795 _inter_sweep_timer.start(); // start of time
796 }
797
798 size_t CMSCollector::plab_sample_minimum_size() {
799 // The default value of MinTLABSize is 2k, but there is
800 // no way to get the default value if the flag has been overridden.
801 return MAX2(ThreadLocalAllocBuffer::min_size() * HeapWordSize, 2 * K);
796 } 802 }
797 803
798 const char* ConcurrentMarkSweepGeneration::name() const { 804 const char* ConcurrentMarkSweepGeneration::name() const {
799 return "concurrent mark-sweep generation"; 805 return "concurrent mark-sweep generation";
800 } 806 }

mercurial