src/share/vm/gc_implementation/g1/concurrentMark.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hs-gc9-report-end Sdiff src/share/vm/gc_implementation/g1

src/share/vm/gc_implementation/g1/concurrentMark.cpp

Print this page




3255   // Clear the liveness counting data
3256   clear_all_count_data();
3257   // Empty mark stack
3258   reset_marking_state();
3259   for (uint i = 0; i < _max_worker_id; ++i) {
3260     _tasks[i]->clear_region_fields();
3261   }
3262   _first_overflow_barrier_sync.abort();
3263   _second_overflow_barrier_sync.abort();
3264   _has_aborted = true;
3265 
3266   SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set();
3267   satb_mq_set.abandon_partial_marking();
3268   // This can be called either during or outside marking, we'll read
3269   // the expected_active value from the SATB queue set.
3270   satb_mq_set.set_active_all_threads(
3271                                  false, /* new active value */
3272                                  satb_mq_set.is_active() /* expected_active */);
3273 
3274   _g1h->trace_heap_after_concurrent_cycle();
3275   _g1h->register_concurrent_cycle_end();
3276 }
3277 
3278 static void print_ms_time_info(const char* prefix, const char* name,
3279                                NumberSeq& ns) {
3280   gclog_or_tty->print_cr("%s%5d %12s: total time = %8.2f s (avg = %8.2f ms).",
3281                          prefix, ns.num(), name, ns.sum()/1000.0, ns.avg());
3282   if (ns.num() > 0) {
3283     gclog_or_tty->print_cr("%s         [std. dev = %8.2f ms, max = %8.2f ms]",
3284                            prefix, ns.sd(), ns.maximum());
3285   }
3286 }
3287 
3288 void ConcurrentMark::print_summary_info() {
3289   gclog_or_tty->print_cr(" Concurrent marking:");
3290   print_ms_time_info("  ", "init marks", _init_times);
3291   print_ms_time_info("  ", "remarks", _remark_times);
3292   {
3293     print_ms_time_info("     ", "final marks", _remark_mark_times);
3294     print_ms_time_info("     ", "weak refs", _remark_weak_ref_times);
3295 




3255   // Clear the liveness counting data
3256   clear_all_count_data();
3257   // Empty mark stack
3258   reset_marking_state();
3259   for (uint i = 0; i < _max_worker_id; ++i) {
3260     _tasks[i]->clear_region_fields();
3261   }
3262   _first_overflow_barrier_sync.abort();
3263   _second_overflow_barrier_sync.abort();
3264   _has_aborted = true;
3265 
3266   SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set();
3267   satb_mq_set.abandon_partial_marking();
3268   // This can be called either during or outside marking, we'll read
3269   // the expected_active value from the SATB queue set.
3270   satb_mq_set.set_active_all_threads(
3271                                  false, /* new active value */
3272                                  satb_mq_set.is_active() /* expected_active */);
3273 
3274   _g1h->trace_heap_after_concurrent_cycle();

3275 }
3276 
3277 static void print_ms_time_info(const char* prefix, const char* name,
3278                                NumberSeq& ns) {
3279   gclog_or_tty->print_cr("%s%5d %12s: total time = %8.2f s (avg = %8.2f ms).",
3280                          prefix, ns.num(), name, ns.sum()/1000.0, ns.avg());
3281   if (ns.num() > 0) {
3282     gclog_or_tty->print_cr("%s         [std. dev = %8.2f ms, max = %8.2f ms]",
3283                            prefix, ns.sd(), ns.maximum());
3284   }
3285 }
3286 
3287 void ConcurrentMark::print_summary_info() {
3288   gclog_or_tty->print_cr(" Concurrent marking:");
3289   print_ms_time_info("  ", "init marks", _init_times);
3290   print_ms_time_info("  ", "remarks", _remark_times);
3291   {
3292     print_ms_time_info("     ", "final marks", _remark_mark_times);
3293     print_ms_time_info("     ", "weak refs", _remark_weak_ref_times);
3294 


src/share/vm/gc_implementation/g1/concurrentMark.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File