208 delete worker_slices[i];
209 }
210 FREE_C_HEAP_ARRAY(ShenandoahHeapRegionSet*, worker_slices);
211
212 CodeCache::gc_epilogue();
213 JvmtiExport::gc_epilogue();
214 }
215
216 heap->set_full_gc_move_in_progress(false);
217 heap->set_full_gc_in_progress(false);
218
219 if (ShenandoahVerify) {
220 heap->verifier()->verify_after_fullgc();
221 }
222 }
223
224 {
225 ShenandoahGCPhase phase(ShenandoahPhaseTimings::full_gc_heapdumps);
226 heap->post_full_gc_dump(_gc_timer);
227 }
228
229 if (UseTLAB) {
230 ShenandoahGCPhase phase(ShenandoahPhaseTimings::full_gc_resize_tlabs);
231 heap->resize_all_tlabs();
232 }
233 }
234
235
236 if (UseShenandoahMatrix && PrintShenandoahMatrix) {
237 LogTarget(Info, gc) lt;
238 LogStream ls(lt);
239 heap->connection_matrix()->print_on(&ls);
240 }
241 }
242
243 void ShenandoahMarkCompact::phase1_mark_heap() {
244 GCTraceTime(Info, gc, phases) time("Phase 1: Mark live objects", _gc_timer);
245 ShenandoahGCPhase mark_phase(ShenandoahPhaseTimings::full_gc_mark);
246
247 ShenandoahHeap* heap = ShenandoahHeap::heap();
248
249 ShenandoahConcurrentMark* cm = heap->concurrentMark();
250
251 // Do not trust heuristics, because this can be our last resort collection.
252 // Only ignore processing references and class unloading if explicitly disabled.
|
208 delete worker_slices[i];
209 }
210 FREE_C_HEAP_ARRAY(ShenandoahHeapRegionSet*, worker_slices);
211
212 CodeCache::gc_epilogue();
213 JvmtiExport::gc_epilogue();
214 }
215
216 heap->set_full_gc_move_in_progress(false);
217 heap->set_full_gc_in_progress(false);
218
219 if (ShenandoahVerify) {
220 heap->verifier()->verify_after_fullgc();
221 }
222 }
223
224 {
225 ShenandoahGCPhase phase(ShenandoahPhaseTimings::full_gc_heapdumps);
226 heap->post_full_gc_dump(_gc_timer);
227 }
228 }
229
230
231 if (UseShenandoahMatrix && PrintShenandoahMatrix) {
232 LogTarget(Info, gc) lt;
233 LogStream ls(lt);
234 heap->connection_matrix()->print_on(&ls);
235 }
236 }
237
238 void ShenandoahMarkCompact::phase1_mark_heap() {
239 GCTraceTime(Info, gc, phases) time("Phase 1: Mark live objects", _gc_timer);
240 ShenandoahGCPhase mark_phase(ShenandoahPhaseTimings::full_gc_mark);
241
242 ShenandoahHeap* heap = ShenandoahHeap::heap();
243
244 ShenandoahConcurrentMark* cm = heap->concurrentMark();
245
246 // Do not trust heuristics, because this can be our last resort collection.
247 // Only ignore processing references and class unloading if explicitly disabled.
|