307 HumongousReclaimCandidates _humongous_reclaim_candidates;
308 // Stores whether during humongous object registration we found candidate regions.
309 // If not, we can skip a few steps.
310 bool _has_humongous_reclaim_candidates;
311
312 volatile unsigned _gc_time_stamp;
313
314 size_t* _surviving_young_words;
315
316 G1HRPrinter _hr_printer;
317
318 void setup_surviving_young_words();
319 void update_surviving_young_words(size_t* surv_young_words);
320 void cleanup_surviving_young_words();
321
322 // It decides whether an explicit GC should start a concurrent cycle
323 // instead of doing a STW GC. Currently, a concurrent cycle is
324 // explicitly started if:
325 // (a) cause == _gc_locker and +GCLockerInvokesConcurrent, or
326 // (b) cause == _java_lang_system_gc and +ExplicitGCInvokesConcurrent.
327 // (c) cause == _g1_humongous_allocation
328 bool should_do_concurrent_full_gc(GCCause::Cause cause);
329
330 // Keeps track of how many "old marking cycles" (i.e., Full GCs or
331 // concurrent cycles) we have started.
332 volatile uint _old_marking_cycles_started;
333
334 // Keeps track of how many "old marking cycles" (i.e., Full GCs or
335 // concurrent cycles) we have completed.
336 volatile uint _old_marking_cycles_completed;
337
338 bool _concurrent_cycle_started;
339 bool _heap_summary_sent;
340
341 // This is a non-product method that is helpful for testing. It is
342 // called at the end of a GC and artificially expands the heap by
343 // allocating a number of dead regions. This way we can induce very
344 // frequent marking cycles and stress the cleanup / concurrent
345 // cleanup code more (as all the regions that will be allocated by
346 // this method will be found dead by the marking cycle).
347 void allocate_dummy_regions() PRODUCT_RETURN;
|
307 HumongousReclaimCandidates _humongous_reclaim_candidates;
308 // Stores whether during humongous object registration we found candidate regions.
309 // If not, we can skip a few steps.
310 bool _has_humongous_reclaim_candidates;
311
312 volatile unsigned _gc_time_stamp;
313
314 size_t* _surviving_young_words;
315
316 G1HRPrinter _hr_printer;
317
318 void setup_surviving_young_words();
319 void update_surviving_young_words(size_t* surv_young_words);
320 void cleanup_surviving_young_words();
321
322 // It decides whether an explicit GC should start a concurrent cycle
323 // instead of doing a STW GC. Currently, a concurrent cycle is
324 // explicitly started if:
325 // (a) cause == _gc_locker and +GCLockerInvokesConcurrent, or
326 // (b) cause == _java_lang_system_gc and +ExplicitGCInvokesConcurrent.
327 // (c) cause == _dcmd_gc_run and +ExplicitGCInvokesConcurrent.
328 // (d) cause == _g1_humongous_allocation
329 bool should_do_concurrent_full_gc(GCCause::Cause cause);
330
331 // Keeps track of how many "old marking cycles" (i.e., Full GCs or
332 // concurrent cycles) we have started.
333 volatile uint _old_marking_cycles_started;
334
335 // Keeps track of how many "old marking cycles" (i.e., Full GCs or
336 // concurrent cycles) we have completed.
337 volatile uint _old_marking_cycles_completed;
338
339 bool _concurrent_cycle_started;
340 bool _heap_summary_sent;
341
342 // This is a non-product method that is helpful for testing. It is
343 // called at the end of a GC and artificially expands the heap by
344 // allocating a number of dead regions. This way we can induce very
345 // frequent marking cycles and stress the cleanup / concurrent
346 // cleanup code more (as all the regions that will be allocated by
347 // this method will be found dead by the marking cycle).
348 void allocate_dummy_regions() PRODUCT_RETURN;
|