< prev index next >

src/hotspot/share/gc/g1/g1ConcurrentMark.cpp

Print this page
rev 52312 : imported patch 6490394-uncommit-at-remark


1161       uint const num_workers = MIN2(_g1h->workers()->active_workers(), workers_by_capacity);
1162 
1163       G1UpdateRemSetTrackingBeforeRebuildTask cl(_g1h, this, num_workers);
1164       log_debug(gc,ergo)("Running %s using %u workers for %u regions in heap", cl.name(), num_workers, _g1h->num_regions());
1165       _g1h->workers()->run_task(&cl, num_workers);
1166 
1167       log_debug(gc, remset, tracking)("Remembered Set Tracking update regions total %u, selected %u",
1168                                       _g1h->num_regions(), cl.total_selected_for_rebuild());
1169     }
1170     {
1171       GCTraceTime(Debug, gc, phases) debug("Reclaim Empty Regions", _gc_timer_cm);
1172       reclaim_empty_regions();
1173     }
1174 
1175     // Clean out dead classes
1176     if (ClassUnloadingWithConcurrentMark) {
1177       GCTraceTime(Debug, gc, phases) debug("Purge Metaspace", _gc_timer_cm);
1178       ClassLoaderDataGraph::purge();
1179     }
1180 


1181     compute_new_sizes();
1182 
1183     verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark after");
1184 
1185     assert(!restart_for_overflow(), "sanity");
1186     // Completely reset the marking state since marking completed
1187     reset_at_marking_complete();
1188   } else {
1189     // We overflowed.  Restart concurrent marking.
1190     _restart_for_overflow = true;
1191 
1192     verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark overflow");
1193 
1194     // Clear the marking state because we will be restarting
1195     // marking due to overflowing the global mark stack.
1196     reset_marking_for_restart();
1197   }
1198 
1199   {
1200     GCTraceTime(Debug, gc, phases) debug("Report Object Count", _gc_timer_cm);




1161       uint const num_workers = MIN2(_g1h->workers()->active_workers(), workers_by_capacity);
1162 
1163       G1UpdateRemSetTrackingBeforeRebuildTask cl(_g1h, this, num_workers);
1164       log_debug(gc,ergo)("Running %s using %u workers for %u regions in heap", cl.name(), num_workers, _g1h->num_regions());
1165       _g1h->workers()->run_task(&cl, num_workers);
1166 
1167       log_debug(gc, remset, tracking)("Remembered Set Tracking update regions total %u, selected %u",
1168                                       _g1h->num_regions(), cl.total_selected_for_rebuild());
1169     }
1170     {
1171       GCTraceTime(Debug, gc, phases) debug("Reclaim Empty Regions", _gc_timer_cm);
1172       reclaim_empty_regions();
1173     }
1174 
1175     // Clean out dead classes
1176     if (ClassUnloadingWithConcurrentMark) {
1177       GCTraceTime(Debug, gc, phases) debug("Purge Metaspace", _gc_timer_cm);
1178       ClassLoaderDataGraph::purge();
1179     }
1180 
1181     _g1h->resize_heap_if_necessary();
1182 
1183     compute_new_sizes();
1184 
1185     verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark after");
1186 
1187     assert(!restart_for_overflow(), "sanity");
1188     // Completely reset the marking state since marking completed
1189     reset_at_marking_complete();
1190   } else {
1191     // We overflowed.  Restart concurrent marking.
1192     _restart_for_overflow = true;
1193 
1194     verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark overflow");
1195 
1196     // Clear the marking state because we will be restarting
1197     // marking due to overflowing the global mark stack.
1198     reset_marking_for_restart();
1199   }
1200 
1201   {
1202     GCTraceTime(Debug, gc, phases) debug("Report Object Count", _gc_timer_cm);


< prev index next >