272 // The kind of STW pause.
273 enum PauseKind {
274 FullGC,
275 YoungOnlyGC,
276 MixedGC,
277 LastYoungGC,
278 InitialMarkGC,
279 Cleanup,
280 Remark
281 };
282
283 // Calculate PauseKind from internal state.
284 PauseKind young_gc_pause_kind() const;
285 // Record the given STW pause with the given start and end times (in s).
286 void record_pause(PauseKind kind, double start, double end);
287 // Indicate that we aborted marking before doing any mixed GCs.
288 void abort_time_to_mixed_tracking();
289
290 void record_concurrent_refinement_data(bool is_full_collection);
291
292 public:
293
294 G1Policy(STWGCTimer* gc_timer);
295
296 virtual ~G1Policy();
297
298 static G1Policy* create_policy(STWGCTimer* gc_timer_stw);
299
300 G1CollectorState* collector_state() const;
301
302 G1GCPhaseTimes* phase_times() const { return _phase_times; }
303
304 // Check the current value of the young list RSet length and
305 // compare it against the last prediction. If the current value is
306 // higher, recalculate the young list target length prediction.
307 void revise_young_list_target_length_if_necessary(size_t rs_length);
308
309 // This should be called after the heap is resized.
310 void record_new_heap_size(uint new_number_of_regions);
311
312 virtual void init(G1CollectedHeap* g1h, G1CollectionSet* collection_set);
313
314 void note_gc_start();
315
316 bool need_to_start_conc_mark(const char* source, size_t alloc_word_size = 0);
317
318 bool about_to_start_mixed_phase() const;
319
320 // Record the start and end of an evacuation pause.
321 void record_collection_pause_start(double start_time_sec);
322 virtual void record_collection_pause_end(double pause_time_ms);
323
324 // Record the start and end of a full collection.
325 void record_full_collection_start();
326 virtual void record_full_collection_end();
327
328 // Must currently be called while the world is stopped.
329 void record_concurrent_mark_init_end(double mark_init_elapsed_time_ms);
330
|
272 // The kind of STW pause.
273 enum PauseKind {
274 FullGC,
275 YoungOnlyGC,
276 MixedGC,
277 LastYoungGC,
278 InitialMarkGC,
279 Cleanup,
280 Remark
281 };
282
283 // Calculate PauseKind from internal state.
284 PauseKind young_gc_pause_kind() const;
285 // Record the given STW pause with the given start and end times (in s).
286 void record_pause(PauseKind kind, double start, double end);
287 // Indicate that we aborted marking before doing any mixed GCs.
288 void abort_time_to_mixed_tracking();
289
290 void record_concurrent_refinement_data(bool is_full_collection);
291
292 void record_new_target_heap_size(uint new_number_of_regions, uint reserve_regions);
293 public:
294
295 G1Policy(STWGCTimer* gc_timer);
296
297 virtual ~G1Policy();
298
299 static G1Policy* create_policy(STWGCTimer* gc_timer_stw);
300
301 G1CollectorState* collector_state() const;
302
303 G1GCPhaseTimes* phase_times() const { return _phase_times; }
304
305 // Check the current value of the young list RSet length and
306 // compare it against the last prediction. If the current value is
307 // higher, recalculate the young list target length prediction.
308 void revise_young_list_target_length_if_necessary(size_t rs_length);
309
310 // Updates heap size targets taking current heap dimensions into account. This should
311 // be called after changes to the sizes of the heap.
312 void update_heap_target_size(uint num_regions, uint soft_goal_num_regions);
313
314 virtual void init(G1CollectedHeap* g1h, G1CollectionSet* collection_set);
315
316 void note_gc_start();
317
318 bool need_to_start_conc_mark(const char* source, size_t alloc_word_size = 0);
319
320 bool about_to_start_mixed_phase() const;
321
322 // Record the start and end of an evacuation pause.
323 void record_collection_pause_start(double start_time_sec);
324 virtual void record_collection_pause_end(double pause_time_ms);
325
326 // Record the start and end of a full collection.
327 void record_full_collection_start();
328 virtual void record_full_collection_end();
329
330 // Must currently be called while the world is stopped.
331 void record_concurrent_mark_init_end(double mark_init_elapsed_time_ms);
332
|