1188 uint const num_workers = MIN2(_g1h->workers()->active_workers(), workers_by_capacity);
1189
1190 G1UpdateRemSetTrackingBeforeRebuildTask cl(_g1h, this, num_workers);
1191 log_debug(gc,ergo)("Running %s using %u workers for %u regions in heap", cl.name(), num_workers, _g1h->num_regions());
1192 _g1h->workers()->run_task(&cl, num_workers);
1193
1194 log_debug(gc, remset, tracking)("Remembered Set Tracking update regions total %u, selected %u",
1195 _g1h->num_regions(), cl.total_selected_for_rebuild());
1196 }
1197 {
1198 GCTraceTime(Debug, gc, phases) debug("Reclaim Empty Regions", _gc_timer_cm);
1199 reclaim_empty_regions();
1200 }
1201
1202 // Clean out dead classes
1203 if (ClassUnloadingWithConcurrentMark) {
1204 GCTraceTime(Debug, gc, phases) debug("Purge Metaspace", _gc_timer_cm);
1205 ClassLoaderDataGraph::purge();
1206 }
1207
1208 _g1h->resize_heap_if_necessary();
1209
1210 compute_new_sizes();
1211
1212 verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark after");
1213
1214 assert(!restart_for_overflow(), "sanity");
1215 // Completely reset the marking state since marking completed
1216 reset_at_marking_complete();
1217 } else {
1218 // We overflowed. Restart concurrent marking.
1219 _restart_for_overflow = true;
1220
1221 verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark overflow");
1222
1223 // Clear the marking state because we will be restarting
1224 // marking due to overflowing the global mark stack.
1225 reset_marking_for_restart();
1226 }
1227
1228 {
1229 GCTraceTime(Debug, gc, phases) debug("Report Object Count", _gc_timer_cm);
|
1188 uint const num_workers = MIN2(_g1h->workers()->active_workers(), workers_by_capacity);
1189
1190 G1UpdateRemSetTrackingBeforeRebuildTask cl(_g1h, this, num_workers);
1191 log_debug(gc,ergo)("Running %s using %u workers for %u regions in heap", cl.name(), num_workers, _g1h->num_regions());
1192 _g1h->workers()->run_task(&cl, num_workers);
1193
1194 log_debug(gc, remset, tracking)("Remembered Set Tracking update regions total %u, selected %u",
1195 _g1h->num_regions(), cl.total_selected_for_rebuild());
1196 }
1197 {
1198 GCTraceTime(Debug, gc, phases) debug("Reclaim Empty Regions", _gc_timer_cm);
1199 reclaim_empty_regions();
1200 }
1201
1202 // Clean out dead classes
1203 if (ClassUnloadingWithConcurrentMark) {
1204 GCTraceTime(Debug, gc, phases) debug("Purge Metaspace", _gc_timer_cm);
1205 ClassLoaderDataGraph::purge();
1206 }
1207
1208 compute_new_sizes();
1209
1210 verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark after");
1211
1212 assert(!restart_for_overflow(), "sanity");
1213 // Completely reset the marking state since marking completed
1214 reset_at_marking_complete();
1215 } else {
1216 // We overflowed. Restart concurrent marking.
1217 _restart_for_overflow = true;
1218
1219 verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark overflow");
1220
1221 // Clear the marking state because we will be restarting
1222 // marking due to overflowing the global mark stack.
1223 reset_marking_for_restart();
1224 }
1225
1226 {
1227 GCTraceTime(Debug, gc, phases) debug("Report Object Count", _gc_timer_cm);
|