88 _gc_par_phases[ScanHR] = new WorkerDataArray<double>("ScanHR", "Scan Heap Roots (ms):", max_gc_threads);
89 _gc_par_phases[OptScanHR] = new WorkerDataArray<double>("OptScanHR", "Optional Scan Heap Roots (ms):", max_gc_threads);
90 _gc_par_phases[CodeRoots] = new WorkerDataArray<double>("CodeRoots", "Code Root Scan (ms):", max_gc_threads);
91 _gc_par_phases[OptCodeRoots] = new WorkerDataArray<double>("OptCodeRoots", "Optional Code Root Scan (ms):", max_gc_threads);
92 _gc_par_phases[ObjCopy] = new WorkerDataArray<double>("ObjCopy", "Object Copy (ms):", max_gc_threads);
93 _gc_par_phases[OptObjCopy] = new WorkerDataArray<double>("OptObjCopy", "Optional Object Copy (ms):", max_gc_threads);
94 _gc_par_phases[Termination] = new WorkerDataArray<double>("Termination", "Termination (ms):", max_gc_threads);
95 _gc_par_phases[OptTermination] = new WorkerDataArray<double>("OptTermination", "Optional Termination (ms):", max_gc_threads);
96 _gc_par_phases[GCWorkerTotal] = new WorkerDataArray<double>("GCWorkerTotal", "GC Worker Total (ms):", max_gc_threads);
97 _gc_par_phases[GCWorkerEnd] = new WorkerDataArray<double>("GCWorkerEnd", "GC Worker End (ms):", max_gc_threads);
98 _gc_par_phases[Other] = new WorkerDataArray<double>("Other", "GC Worker Other (ms):", max_gc_threads);
99 _gc_par_phases[MergePSS] = new WorkerDataArray<double>("MergePSS", "Merge Per-Thread State (ms):", max_gc_threads);
100 _gc_par_phases[RestoreEvacuationFailedRegions] = new WorkerDataArray<double>("RestoreEvacuationFailedRegions", "Restore Evacuation Failed Regions (ms):", max_gc_threads);
101 _gc_par_phases[RemoveSelfForwards] = new WorkerDataArray<double>("RemoveSelfForwards", "Remove Self Forwards (ms):", max_gc_threads);
102 _gc_par_phases[ClearCardTable] = new WorkerDataArray<double>("ClearLoggedCards", "Clear Logged Cards (ms):", max_gc_threads);
103 _gc_par_phases[RecalculateUsed] = new WorkerDataArray<double>("RecalculateUsed", "Recalculate Used Memory (ms):", max_gc_threads);
104 #if COMPILER2_OR_JVMCI
105 _gc_par_phases[UpdateDerivedPointers] = new WorkerDataArray<double>("UpdateDerivedPointers", "Update Derived Pointers (ms):", max_gc_threads);
106 #endif
107 _gc_par_phases[EagerlyReclaimHumongousObjects] = new WorkerDataArray<double>("EagerlyReclaimHumongousObjects", "Eagerly Reclaim Humongous Objects (ms):", max_gc_threads);
108 _gc_par_phases[RestorePreservedMarks] = new WorkerDataArray<double>("RestorePreservedMarks", "Restore Preserved Marks (ms):", max_gc_threads);
109 _gc_par_phases[ProcessEvacuationFailedRegions] = new WorkerDataArray<double>("ProcessEvacuationFailedRegions", "Process Evacuation Failed Regions (ms):", max_gc_threads);
110
111 _gc_par_phases[ScanHR]->create_thread_work_items("Scanned Cards:", ScanHRScannedCards);
112 _gc_par_phases[ScanHR]->create_thread_work_items("Scanned Blocks:", ScanHRScannedBlocks);
113 _gc_par_phases[ScanHR]->create_thread_work_items("Claimed Chunks:", ScanHRClaimedChunks);
114 _gc_par_phases[ScanHR]->create_thread_work_items("Found Roots:", ScanHRFoundRoots);
115
116 _gc_par_phases[OptScanHR]->create_thread_work_items("Scanned Cards:", ScanHRScannedCards);
117 _gc_par_phases[OptScanHR]->create_thread_work_items("Scanned Blocks:", ScanHRScannedBlocks);
118 _gc_par_phases[OptScanHR]->create_thread_work_items("Claimed Chunks:", ScanHRClaimedChunks);
119 _gc_par_phases[OptScanHR]->create_thread_work_items("Found Roots:", ScanHRFoundRoots);
120 _gc_par_phases[OptScanHR]->create_thread_work_items("Scanned Refs:", ScanHRScannedOptRefs);
121 _gc_par_phases[OptScanHR]->create_thread_work_items("Used Memory:", ScanHRUsedMemory);
122
123 _gc_par_phases[MergeLB]->create_thread_work_items("Dirty Cards:", MergeLBDirtyCards);
124 _gc_par_phases[MergeLB]->create_thread_work_items("Skipped Cards:", MergeLBSkippedCards);
125
126 _gc_par_phases[CodeRoots]->create_thread_work_items("Scanned Nmethods:", CodeRootsScannedNMethods);
127
128 _gc_par_phases[OptCodeRoots]->create_thread_work_items("Scanned Nmethods:", CodeRootsScannedNMethods);
495
496 debug_time("NMethod List Cleanup", _cur_collection_nmethod_list_cleanup_time_ms);
497
498 debug_time_for_reference("Reference Processing", _cur_ref_proc_time_ms);
499 _ref_phase_times.print_all_references(2, false);
500 _weak_phase_times.log_total(2);
501 _weak_phase_times.log_subtotals(3);
502
503 debug_time("Post Evacuate Cleanup 1", _cur_post_evacuate_cleanup_1_time_ms);
504 debug_phase(_gc_par_phases[MergePSS], 1);
505 debug_phase(_gc_par_phases[ClearCardTable], 1);
506 debug_phase(_gc_par_phases[RecalculateUsed], 1);
507 if (evacuation_failed) {
508 debug_phase(_gc_par_phases[RestoreEvacuationFailedRegions], 1);
509 debug_phase(_gc_par_phases[RemoveSelfForwards], 2);
510 }
511
512 debug_time("Post Evacuate Cleanup 2", _cur_post_evacuate_cleanup_2_time_ms);
513 if (evacuation_failed) {
514 debug_phase(_gc_par_phases[RecalculateUsed], 1);
515 debug_phase(_gc_par_phases[RestorePreservedMarks], 1);
516 debug_phase(_gc_par_phases[ProcessEvacuationFailedRegions], 1);
517 }
518 #if COMPILER2_OR_JVMCI
519 debug_phase(_gc_par_phases[UpdateDerivedPointers], 1);
520 #endif
521 debug_phase(_gc_par_phases[EagerlyReclaimHumongousObjects], 1);
522
523 if (G1CollectedHeap::heap()->should_sample_collection_set_candidates()) {
524 debug_phase(_gc_par_phases[SampleCollectionSetCandidates], 1);
525 }
526 debug_phase(_gc_par_phases[RedirtyCards], 1);
527 if (UseTLAB && ResizeTLAB) {
528 debug_phase(_gc_par_phases[ResizeThreadLABs], 1);
529 }
530 debug_phase(_gc_par_phases[FreeCollectionSet], 1);
531 trace_phase(_gc_par_phases[YoungFreeCSet], true, 1);
532 trace_phase(_gc_par_phases[NonYoungFreeCSet], true, 1);
533
534 trace_time("Serial Free Collection Set", _recorded_serial_free_cset_time_ms);
535
|
88 _gc_par_phases[ScanHR] = new WorkerDataArray<double>("ScanHR", "Scan Heap Roots (ms):", max_gc_threads);
89 _gc_par_phases[OptScanHR] = new WorkerDataArray<double>("OptScanHR", "Optional Scan Heap Roots (ms):", max_gc_threads);
90 _gc_par_phases[CodeRoots] = new WorkerDataArray<double>("CodeRoots", "Code Root Scan (ms):", max_gc_threads);
91 _gc_par_phases[OptCodeRoots] = new WorkerDataArray<double>("OptCodeRoots", "Optional Code Root Scan (ms):", max_gc_threads);
92 _gc_par_phases[ObjCopy] = new WorkerDataArray<double>("ObjCopy", "Object Copy (ms):", max_gc_threads);
93 _gc_par_phases[OptObjCopy] = new WorkerDataArray<double>("OptObjCopy", "Optional Object Copy (ms):", max_gc_threads);
94 _gc_par_phases[Termination] = new WorkerDataArray<double>("Termination", "Termination (ms):", max_gc_threads);
95 _gc_par_phases[OptTermination] = new WorkerDataArray<double>("OptTermination", "Optional Termination (ms):", max_gc_threads);
96 _gc_par_phases[GCWorkerTotal] = new WorkerDataArray<double>("GCWorkerTotal", "GC Worker Total (ms):", max_gc_threads);
97 _gc_par_phases[GCWorkerEnd] = new WorkerDataArray<double>("GCWorkerEnd", "GC Worker End (ms):", max_gc_threads);
98 _gc_par_phases[Other] = new WorkerDataArray<double>("Other", "GC Worker Other (ms):", max_gc_threads);
99 _gc_par_phases[MergePSS] = new WorkerDataArray<double>("MergePSS", "Merge Per-Thread State (ms):", max_gc_threads);
100 _gc_par_phases[RestoreEvacuationFailedRegions] = new WorkerDataArray<double>("RestoreEvacuationFailedRegions", "Restore Evacuation Failed Regions (ms):", max_gc_threads);
101 _gc_par_phases[RemoveSelfForwards] = new WorkerDataArray<double>("RemoveSelfForwards", "Remove Self Forwards (ms):", max_gc_threads);
102 _gc_par_phases[ClearCardTable] = new WorkerDataArray<double>("ClearLoggedCards", "Clear Logged Cards (ms):", max_gc_threads);
103 _gc_par_phases[RecalculateUsed] = new WorkerDataArray<double>("RecalculateUsed", "Recalculate Used Memory (ms):", max_gc_threads);
104 #if COMPILER2_OR_JVMCI
105 _gc_par_phases[UpdateDerivedPointers] = new WorkerDataArray<double>("UpdateDerivedPointers", "Update Derived Pointers (ms):", max_gc_threads);
106 #endif
107 _gc_par_phases[EagerlyReclaimHumongousObjects] = new WorkerDataArray<double>("EagerlyReclaimHumongousObjects", "Eagerly Reclaim Humongous Objects (ms):", max_gc_threads);
108 _gc_par_phases[ProcessEvacuationFailedRegions] = new WorkerDataArray<double>("ProcessEvacuationFailedRegions", "Process Evacuation Failed Regions (ms):", max_gc_threads);
109
110 _gc_par_phases[ScanHR]->create_thread_work_items("Scanned Cards:", ScanHRScannedCards);
111 _gc_par_phases[ScanHR]->create_thread_work_items("Scanned Blocks:", ScanHRScannedBlocks);
112 _gc_par_phases[ScanHR]->create_thread_work_items("Claimed Chunks:", ScanHRClaimedChunks);
113 _gc_par_phases[ScanHR]->create_thread_work_items("Found Roots:", ScanHRFoundRoots);
114
115 _gc_par_phases[OptScanHR]->create_thread_work_items("Scanned Cards:", ScanHRScannedCards);
116 _gc_par_phases[OptScanHR]->create_thread_work_items("Scanned Blocks:", ScanHRScannedBlocks);
117 _gc_par_phases[OptScanHR]->create_thread_work_items("Claimed Chunks:", ScanHRClaimedChunks);
118 _gc_par_phases[OptScanHR]->create_thread_work_items("Found Roots:", ScanHRFoundRoots);
119 _gc_par_phases[OptScanHR]->create_thread_work_items("Scanned Refs:", ScanHRScannedOptRefs);
120 _gc_par_phases[OptScanHR]->create_thread_work_items("Used Memory:", ScanHRUsedMemory);
121
122 _gc_par_phases[MergeLB]->create_thread_work_items("Dirty Cards:", MergeLBDirtyCards);
123 _gc_par_phases[MergeLB]->create_thread_work_items("Skipped Cards:", MergeLBSkippedCards);
124
125 _gc_par_phases[CodeRoots]->create_thread_work_items("Scanned Nmethods:", CodeRootsScannedNMethods);
126
127 _gc_par_phases[OptCodeRoots]->create_thread_work_items("Scanned Nmethods:", CodeRootsScannedNMethods);
494
495 debug_time("NMethod List Cleanup", _cur_collection_nmethod_list_cleanup_time_ms);
496
497 debug_time_for_reference("Reference Processing", _cur_ref_proc_time_ms);
498 _ref_phase_times.print_all_references(2, false);
499 _weak_phase_times.log_total(2);
500 _weak_phase_times.log_subtotals(3);
501
502 debug_time("Post Evacuate Cleanup 1", _cur_post_evacuate_cleanup_1_time_ms);
503 debug_phase(_gc_par_phases[MergePSS], 1);
504 debug_phase(_gc_par_phases[ClearCardTable], 1);
505 debug_phase(_gc_par_phases[RecalculateUsed], 1);
506 if (evacuation_failed) {
507 debug_phase(_gc_par_phases[RestoreEvacuationFailedRegions], 1);
508 debug_phase(_gc_par_phases[RemoveSelfForwards], 2);
509 }
510
511 debug_time("Post Evacuate Cleanup 2", _cur_post_evacuate_cleanup_2_time_ms);
512 if (evacuation_failed) {
513 debug_phase(_gc_par_phases[RecalculateUsed], 1);
514 debug_phase(_gc_par_phases[ProcessEvacuationFailedRegions], 1);
515 }
516 #if COMPILER2_OR_JVMCI
517 debug_phase(_gc_par_phases[UpdateDerivedPointers], 1);
518 #endif
519 debug_phase(_gc_par_phases[EagerlyReclaimHumongousObjects], 1);
520
521 if (G1CollectedHeap::heap()->should_sample_collection_set_candidates()) {
522 debug_phase(_gc_par_phases[SampleCollectionSetCandidates], 1);
523 }
524 debug_phase(_gc_par_phases[RedirtyCards], 1);
525 if (UseTLAB && ResizeTLAB) {
526 debug_phase(_gc_par_phases[ResizeThreadLABs], 1);
527 }
528 debug_phase(_gc_par_phases[FreeCollectionSet], 1);
529 trace_phase(_gc_par_phases[YoungFreeCSet], true, 1);
530 trace_phase(_gc_par_phases[NonYoungFreeCSet], true, 1);
531
532 trace_time("Serial Free Collection Set", _recorded_serial_free_cset_time_ms);
533
|