src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp

Print this page
rev 4323 : 8010780: G1: Eden occupancy/capacity output wrong after a full GC
Summary: Move the calculation and recording of eden capacity to the start of a GC and print a detailed heap transition for full GCs.
Reviewed-by:

*** 669,706 **** GenRemSet::Name rem_set_name() { return GenRemSet::CardTable; } bool need_to_start_conc_mark(const char* source, size_t alloc_word_size = 0); ! // Update the heuristic info to record a collection pause of the given ! // start time, where the given number of bytes were used at the start. ! // This may involve changing the desired size of a collection set. ! void record_stop_world_start(); ! ! void record_collection_pause_start(double start_time_sec, size_t start_used); // Must currently be called while the world is stopped. ! void record_concurrent_mark_init_end(double ! mark_init_elapsed_time_ms); void record_concurrent_mark_remark_start(); void record_concurrent_mark_remark_end(); void record_concurrent_mark_cleanup_start(); void record_concurrent_mark_cleanup_end(int no_of_gc_threads); void record_concurrent_mark_cleanup_completed(); ! void record_concurrent_pause(); ! void record_collection_pause_end(double pause_time); void print_heap_transition(); void print_detailed_heap_transition(); ! // Record the fact that a full collection occurred. ! void record_full_collection_start(); ! void record_full_collection_end(); // Record how much space we copied during a GC. This is typically // called when a GC alloc region is being retired. void record_bytes_copied_during_gc(size_t bytes) { _bytes_copied_during_gc += bytes; --- 669,708 ---- GenRemSet::Name rem_set_name() { return GenRemSet::CardTable; } bool need_to_start_conc_mark(const char* source, size_t alloc_word_size = 0); ! // Record the start and end of an evacuation pause. ! void record_collection_pause_start(double start_time_sec); ! void record_collection_pause_end(double pause_time_ms); ! // Record the start and end of a full collection. ! void record_full_collection_start(); ! void record_full_collection_end(); // Must currently be called while the world is stopped. ! void record_concurrent_mark_init_end(double mark_init_elapsed_time_ms); + // Record start and end of remark. void record_concurrent_mark_remark_start(); void record_concurrent_mark_remark_end(); + // Record start, end, and completion of cleanup. void record_concurrent_mark_cleanup_start(); void record_concurrent_mark_cleanup_end(int no_of_gc_threads); void record_concurrent_mark_cleanup_completed(); ! // Records the information about the heap size for reporting in ! // print_detailed_heap_transition ! void record_heap_size_info_at_start(); ! // Print heap sizing transition (with less and more detail). void print_heap_transition(); void print_detailed_heap_transition(); ! void record_stop_world_start(); ! void record_concurrent_pause(); // Record how much space we copied during a GC. This is typically // called when a GC alloc region is being retired. void record_bytes_copied_during_gc(size_t bytes) { _bytes_copied_during_gc += bytes;