hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
changeset 24093 095cc0a63ed9
parent 24092 e274d864545a
child 24094 5dbf1f44de18
equal deleted inserted replaced
24092:e274d864545a 24093:095cc0a63ed9
   429 }
   429 }
   430 
   430 
   431 void G1CollectedHeap::stop_conc_gc_threads() {
   431 void G1CollectedHeap::stop_conc_gc_threads() {
   432   _cg1r->stop();
   432   _cg1r->stop();
   433   _cmThread->stop();
   433   _cmThread->stop();
       
   434   if (G1StringDedup::is_enabled()) {
       
   435     G1StringDedup::stop();
       
   436   }
   434 }
   437 }
   435 
   438 
   436 #ifdef ASSERT
   439 #ifdef ASSERT
   437 // A region is added to the collection set as it is retired
   440 // A region is added to the collection set as it is retired
   438 // so an address p can point to a region which will be in the
   441 // so an address p can point to a region which will be in the
  2176   G1StringDedup::initialize();
  2179   G1StringDedup::initialize();
  2177 
  2180 
  2178   return JNI_OK;
  2181   return JNI_OK;
  2179 }
  2182 }
  2180 
  2183 
       
  2184 void G1CollectedHeap::stop() {
       
  2185   // Abort any ongoing concurrent root region scanning and stop all
       
  2186   // concurrent threads. We do this to make sure these threads do
       
  2187   // not continue to execute and access resources (e.g. gclog_or_tty)
       
  2188   // that are destroyed during shutdown.
       
  2189   _cm->root_regions()->abort();
       
  2190   _cm->root_regions()->wait_until_scan_finished();
       
  2191   stop_conc_gc_threads();
       
  2192 }
       
  2193 
  2181 size_t G1CollectedHeap::conservative_max_heap_alignment() {
  2194 size_t G1CollectedHeap::conservative_max_heap_alignment() {
  2182   return HeapRegion::max_region_size();
  2195   return HeapRegion::max_region_size();
  2183 }
  2196 }
  2184 
  2197 
  2185 void G1CollectedHeap::ref_processing_init() {
  2198 void G1CollectedHeap::ref_processing_init() {