Mercurial > hg > truffle
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 |