src/share/vm/gc/g1/g1GCPhaseTimes.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/gc/g1

src/share/vm/gc/g1/g1GCPhaseTimes.cpp

Print this page




  50   _gc_par_phases[JNIRoots] = new WorkerDataArray<double>(max_gc_threads, "JNI Handles Roots (ms):");
  51   _gc_par_phases[ObjectSynchronizerRoots] = new WorkerDataArray<double>(max_gc_threads, "ObjectSynchronizer Roots (ms):");
  52   _gc_par_phases[FlatProfilerRoots] = new WorkerDataArray<double>(max_gc_threads, "FlatProfiler Roots (ms):");
  53   _gc_par_phases[ManagementRoots] = new WorkerDataArray<double>(max_gc_threads, "Management Roots (ms):");
  54   _gc_par_phases[SystemDictionaryRoots] = new WorkerDataArray<double>(max_gc_threads, "SystemDictionary Roots (ms):");
  55   _gc_par_phases[CLDGRoots] = new WorkerDataArray<double>(max_gc_threads, "CLDG Roots (ms):");
  56   _gc_par_phases[JVMTIRoots] = new WorkerDataArray<double>(max_gc_threads, "JVMTI Roots (ms):");
  57   _gc_par_phases[CMRefRoots] = new WorkerDataArray<double>(max_gc_threads, "CM RefProcessor Roots (ms):");
  58   _gc_par_phases[WaitForStrongCLD] = new WorkerDataArray<double>(max_gc_threads, "Wait For Strong CLD (ms):");
  59   _gc_par_phases[WeakCLDRoots] = new WorkerDataArray<double>(max_gc_threads, "Weak CLD Roots (ms):");
  60   _gc_par_phases[SATBFiltering] = new WorkerDataArray<double>(max_gc_threads, "SATB Filtering (ms):");
  61 
  62   _gc_par_phases[UpdateRS] = new WorkerDataArray<double>(max_gc_threads, "Update RS (ms):");
  63   if (G1HotCardCache::default_use_cache()) {
  64     _gc_par_phases[ScanHCC] = new WorkerDataArray<double>(max_gc_threads, "Scan HCC (ms):");
  65   } else {
  66     _gc_par_phases[ScanHCC] = NULL;
  67   }
  68   _gc_par_phases[ScanRS] = new WorkerDataArray<double>(max_gc_threads, "Scan RS (ms):");
  69   _gc_par_phases[CodeRoots] = new WorkerDataArray<double>(max_gc_threads, "Code Root Scanning (ms):");



  70   _gc_par_phases[ObjCopy] = new WorkerDataArray<double>(max_gc_threads, "Object Copy (ms):");
  71   _gc_par_phases[Termination] = new WorkerDataArray<double>(max_gc_threads, "Termination (ms):");
  72   _gc_par_phases[GCWorkerTotal] = new WorkerDataArray<double>(max_gc_threads, "GC Worker Total (ms):");
  73   _gc_par_phases[GCWorkerEnd] = new WorkerDataArray<double>(max_gc_threads, "GC Worker End (ms):");
  74   _gc_par_phases[Other] = new WorkerDataArray<double>(max_gc_threads, "GC Worker Other (ms):");
  75 
  76   _update_rs_processed_buffers = new WorkerDataArray<size_t>(max_gc_threads, "Processed Buffers:");
  77   _gc_par_phases[UpdateRS]->link_thread_work_items(_update_rs_processed_buffers);
  78 
  79   _termination_attempts = new WorkerDataArray<size_t>(max_gc_threads, "Termination Attempts:");
  80   _gc_par_phases[Termination]->link_thread_work_items(_termination_attempts);
  81 
  82   if (UseStringDeduplication) {
  83     _gc_par_phases[StringDedupQueueFixup] = new WorkerDataArray<double>(max_gc_threads, "Queue Fixup (ms):");
  84     _gc_par_phases[StringDedupTableFixup] = new WorkerDataArray<double>(max_gc_threads, "Table Fixup (ms):");
  85   } else {
  86     _gc_par_phases[StringDedupQueueFixup] = NULL;
  87     _gc_par_phases[StringDedupTableFixup] = NULL;
  88   }
  89 


 247 void G1GCPhaseTimes::print() {
 248   note_gc_end();
 249 
 250   double accounted_time_ms = _external_accounted_time_ms;
 251   if (_root_region_scan_wait_time_ms > 0.0) {
 252     info_line_and_account("Root Region Scan Waiting", _root_region_scan_wait_time_ms);
 253   }
 254 
 255   info_line_and_account("Evacuate Collection Set", _cur_collection_par_time_ms);
 256   trace_phase(_gc_par_phases[GCWorkerStart], false);
 257   debug_phase(_gc_par_phases[ExtRootScan]);
 258   for (int i = ThreadRoots; i <= SATBFiltering; i++) {
 259     trace_phase(_gc_par_phases[i]);
 260   }
 261   debug_phase(_gc_par_phases[UpdateRS]);
 262   if (G1HotCardCache::default_use_cache()) {
 263     trace_phase(_gc_par_phases[ScanHCC]);
 264   }
 265   debug_phase(_gc_par_phases[ScanRS]);
 266   debug_phase(_gc_par_phases[CodeRoots]);



 267   debug_phase(_gc_par_phases[ObjCopy]);
 268   debug_phase(_gc_par_phases[Termination]);
 269   debug_phase(_gc_par_phases[Other]);
 270   debug_phase(_gc_par_phases[GCWorkerTotal]);
 271   trace_phase(_gc_par_phases[GCWorkerEnd], false);
 272 
 273   info_line_and_account("Code Roots", _cur_collection_code_root_fixup_time_ms + _cur_strong_code_root_purge_time_ms);
 274   debug_line("Code Roots Fixup", _cur_collection_code_root_fixup_time_ms);
 275   debug_line("Code Roots Purge", _cur_strong_code_root_purge_time_ms);
 276 
 277   if (G1StringDedup::is_enabled()) {
 278     info_line_and_account("String Dedup Fixup", _cur_string_dedup_fixup_time_ms);
 279     debug_phase(_gc_par_phases[StringDedupQueueFixup]);
 280     debug_phase(_gc_par_phases[StringDedupTableFixup]);
 281   }
 282   info_line_and_account("Clear Card Table", _cur_clear_ct_time_ms);
 283   info_line_and_account("Expand Heap After Collection", _cur_expand_heap_time_ms);
 284 
 285   info_line_and_account("Free Collection Set", _recorded_total_free_cset_time_ms);
 286   debug_line("Free Collection Set Serial", _recorded_serial_free_cset_time_ms);




  50   _gc_par_phases[JNIRoots] = new WorkerDataArray<double>(max_gc_threads, "JNI Handles Roots (ms):");
  51   _gc_par_phases[ObjectSynchronizerRoots] = new WorkerDataArray<double>(max_gc_threads, "ObjectSynchronizer Roots (ms):");
  52   _gc_par_phases[FlatProfilerRoots] = new WorkerDataArray<double>(max_gc_threads, "FlatProfiler Roots (ms):");
  53   _gc_par_phases[ManagementRoots] = new WorkerDataArray<double>(max_gc_threads, "Management Roots (ms):");
  54   _gc_par_phases[SystemDictionaryRoots] = new WorkerDataArray<double>(max_gc_threads, "SystemDictionary Roots (ms):");
  55   _gc_par_phases[CLDGRoots] = new WorkerDataArray<double>(max_gc_threads, "CLDG Roots (ms):");
  56   _gc_par_phases[JVMTIRoots] = new WorkerDataArray<double>(max_gc_threads, "JVMTI Roots (ms):");
  57   _gc_par_phases[CMRefRoots] = new WorkerDataArray<double>(max_gc_threads, "CM RefProcessor Roots (ms):");
  58   _gc_par_phases[WaitForStrongCLD] = new WorkerDataArray<double>(max_gc_threads, "Wait For Strong CLD (ms):");
  59   _gc_par_phases[WeakCLDRoots] = new WorkerDataArray<double>(max_gc_threads, "Weak CLD Roots (ms):");
  60   _gc_par_phases[SATBFiltering] = new WorkerDataArray<double>(max_gc_threads, "SATB Filtering (ms):");
  61 
  62   _gc_par_phases[UpdateRS] = new WorkerDataArray<double>(max_gc_threads, "Update RS (ms):");
  63   if (G1HotCardCache::default_use_cache()) {
  64     _gc_par_phases[ScanHCC] = new WorkerDataArray<double>(max_gc_threads, "Scan HCC (ms):");
  65   } else {
  66     _gc_par_phases[ScanHCC] = NULL;
  67   }
  68   _gc_par_phases[ScanRS] = new WorkerDataArray<double>(max_gc_threads, "Scan RS (ms):");
  69   _gc_par_phases[CodeRoots] = new WorkerDataArray<double>(max_gc_threads, "Code Root Scanning (ms):");
  70 #if INCLUDE_AOT
  71   _gc_par_phases[AOTCodeRoots] = new WorkerDataArray<double>(max_gc_threads, "AOT Root Scanning (ms):");
  72 #endif
  73   _gc_par_phases[ObjCopy] = new WorkerDataArray<double>(max_gc_threads, "Object Copy (ms):");
  74   _gc_par_phases[Termination] = new WorkerDataArray<double>(max_gc_threads, "Termination (ms):");
  75   _gc_par_phases[GCWorkerTotal] = new WorkerDataArray<double>(max_gc_threads, "GC Worker Total (ms):");
  76   _gc_par_phases[GCWorkerEnd] = new WorkerDataArray<double>(max_gc_threads, "GC Worker End (ms):");
  77   _gc_par_phases[Other] = new WorkerDataArray<double>(max_gc_threads, "GC Worker Other (ms):");
  78 
  79   _update_rs_processed_buffers = new WorkerDataArray<size_t>(max_gc_threads, "Processed Buffers:");
  80   _gc_par_phases[UpdateRS]->link_thread_work_items(_update_rs_processed_buffers);
  81 
  82   _termination_attempts = new WorkerDataArray<size_t>(max_gc_threads, "Termination Attempts:");
  83   _gc_par_phases[Termination]->link_thread_work_items(_termination_attempts);
  84 
  85   if (UseStringDeduplication) {
  86     _gc_par_phases[StringDedupQueueFixup] = new WorkerDataArray<double>(max_gc_threads, "Queue Fixup (ms):");
  87     _gc_par_phases[StringDedupTableFixup] = new WorkerDataArray<double>(max_gc_threads, "Table Fixup (ms):");
  88   } else {
  89     _gc_par_phases[StringDedupQueueFixup] = NULL;
  90     _gc_par_phases[StringDedupTableFixup] = NULL;
  91   }
  92 


 250 void G1GCPhaseTimes::print() {
 251   note_gc_end();
 252 
 253   double accounted_time_ms = _external_accounted_time_ms;
 254   if (_root_region_scan_wait_time_ms > 0.0) {
 255     info_line_and_account("Root Region Scan Waiting", _root_region_scan_wait_time_ms);
 256   }
 257 
 258   info_line_and_account("Evacuate Collection Set", _cur_collection_par_time_ms);
 259   trace_phase(_gc_par_phases[GCWorkerStart], false);
 260   debug_phase(_gc_par_phases[ExtRootScan]);
 261   for (int i = ThreadRoots; i <= SATBFiltering; i++) {
 262     trace_phase(_gc_par_phases[i]);
 263   }
 264   debug_phase(_gc_par_phases[UpdateRS]);
 265   if (G1HotCardCache::default_use_cache()) {
 266     trace_phase(_gc_par_phases[ScanHCC]);
 267   }
 268   debug_phase(_gc_par_phases[ScanRS]);
 269   debug_phase(_gc_par_phases[CodeRoots]);
 270 #if INCLUDE_AOT
 271   debug_phase(_gc_par_phases[AOTCodeRoots]);
 272 #endif
 273   debug_phase(_gc_par_phases[ObjCopy]);
 274   debug_phase(_gc_par_phases[Termination]);
 275   debug_phase(_gc_par_phases[Other]);
 276   debug_phase(_gc_par_phases[GCWorkerTotal]);
 277   trace_phase(_gc_par_phases[GCWorkerEnd], false);
 278 
 279   info_line_and_account("Code Roots", _cur_collection_code_root_fixup_time_ms + _cur_strong_code_root_purge_time_ms);
 280   debug_line("Code Roots Fixup", _cur_collection_code_root_fixup_time_ms);
 281   debug_line("Code Roots Purge", _cur_strong_code_root_purge_time_ms);
 282 
 283   if (G1StringDedup::is_enabled()) {
 284     info_line_and_account("String Dedup Fixup", _cur_string_dedup_fixup_time_ms);
 285     debug_phase(_gc_par_phases[StringDedupQueueFixup]);
 286     debug_phase(_gc_par_phases[StringDedupTableFixup]);
 287   }
 288   info_line_and_account("Clear Card Table", _cur_clear_ct_time_ms);
 289   info_line_and_account("Expand Heap After Collection", _cur_expand_heap_time_ms);
 290 
 291   info_line_and_account("Free Collection Set", _recorded_total_free_cset_time_ms);
 292   debug_line("Free Collection Set Serial", _recorded_serial_free_cset_time_ms);


src/share/vm/gc/g1/g1GCPhaseTimes.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File