comparison src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp @ 3914:20213c8a3c40

7050392: G1: Introduce flag to generate a log of the G1 ergonomic decisions Summary: It introduces ergonomic decision logging in G1 for the following heuristics: heap sizing, collection set construction, concurrent cycle initiation, and partially-young GC start/end. The code has a bit of refactoring in a few places to make the decision logging possible. It also replaces alternative ad-hoc logging that we have under different parameters and switches (G1_DEBUG, G1PolicyVerbose). Reviewed-by: johnc, ysr
author tonyp
date Wed, 07 Sep 2011 12:21:23 -0400
parents ae73da50be4b
children 4f41766176cf
comparison
equal deleted inserted replaced
3913:27702f012017 3914:20213c8a3c40
491 491
492 double predict_survivor_regions_evac_time(); 492 double predict_survivor_regions_evac_time();
493 493
494 // </NEW PREDICTION> 494 // </NEW PREDICTION>
495 495
496 public:
497 void cset_regions_freed() { 496 void cset_regions_freed() {
498 bool propagate = _last_young_gc_full && !_in_marking_window; 497 bool propagate = _last_young_gc_full && !_in_marking_window;
499 _short_lived_surv_rate_group->all_surviving_words_recorded(propagate); 498 _short_lived_surv_rate_group->all_surviving_words_recorded(propagate);
500 _survivor_surv_rate_group->all_surviving_words_recorded(propagate); 499 _survivor_surv_rate_group->all_surviving_words_recorded(propagate);
501 // also call it on any more surv rate groups 500 // also call it on any more surv rate groups
1043 1042
1044 // This sets the initiate_conc_mark_if_possible() flag to start a 1043 // This sets the initiate_conc_mark_if_possible() flag to start a
1045 // new cycle, as long as we are not already in one. It's best if it 1044 // new cycle, as long as we are not already in one. It's best if it
1046 // is called during a safepoint when the test whether a cycle is in 1045 // is called during a safepoint when the test whether a cycle is in
1047 // progress or not is stable. 1046 // progress or not is stable.
1048 bool force_initial_mark_if_outside_cycle(); 1047 bool force_initial_mark_if_outside_cycle(GCCause::Cause gc_cause);
1049 1048
1050 // This is called at the very beginning of an evacuation pause (it 1049 // This is called at the very beginning of an evacuation pause (it
1051 // has to be the first thing that the pause does). If 1050 // has to be the first thing that the pause does). If
1052 // initiate_conc_mark_if_possible() is true, and the concurrent 1051 // initiate_conc_mark_if_possible() is true, and the concurrent
1053 // marking thread has completed its work during the previous cycle, 1052 // marking thread has completed its work during the previous cycle,
1232 // survival rate. Then fill out the number of needed regions 1231 // survival rate. Then fill out the number of needed regions
1233 // with young regions. 1232 // with young regions.
1234 1233
1235 class G1CollectorPolicy_BestRegionsFirst: public G1CollectorPolicy { 1234 class G1CollectorPolicy_BestRegionsFirst: public G1CollectorPolicy {
1236 CollectionSetChooser* _collectionSetChooser; 1235 CollectionSetChooser* _collectionSetChooser;
1237 // If the estimated is less then desirable, resize if possible.
1238 void expand_if_possible(size_t numRegions);
1239 1236
1240 virtual void choose_collection_set(double target_pause_time_ms); 1237 virtual void choose_collection_set(double target_pause_time_ms);
1241 virtual void record_collection_pause_start(double start_time_sec, 1238 virtual void record_collection_pause_start(double start_time_sec,
1242 size_t start_used); 1239 size_t start_used);
1243 virtual void record_concurrent_mark_cleanup_end(size_t freed_bytes, 1240 virtual void record_concurrent_mark_cleanup_end(size_t freed_bytes,
1267 double n_d = (double)n; 1264 double n_d = (double)n;
1268 double avg = sum/n_d; 1265 double avg = sum/n_d;
1269 return (sum_of_squares - 2.0 * avg * sum + n_d * avg * avg) / n_d; 1266 return (sum_of_squares - 2.0 * avg * sum + n_d * avg * avg) / n_d;
1270 } 1267 }
1271 1268
1272 // Local Variables: ***
1273 // c-indentation-style: gnu ***
1274 // End: ***
1275
1276 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTORPOLICY_HPP 1269 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1COLLECTORPOLICY_HPP