197 size_t _young_list_fixed_length; |
197 size_t _young_list_fixed_length; |
198 |
198 |
199 size_t _young_cset_length; |
199 size_t _young_cset_length; |
200 bool _last_young_gc_full; |
200 bool _last_young_gc_full; |
201 |
201 |
202 double _target_pause_time_ms; |
|
203 |
|
204 unsigned _full_young_pause_num; |
202 unsigned _full_young_pause_num; |
205 unsigned _partial_young_pause_num; |
203 unsigned _partial_young_pause_num; |
206 |
204 |
207 bool _during_marking; |
205 bool _during_marking; |
208 bool _in_marking_window; |
206 bool _in_marking_window; |
522 _known_garbage_ratio = (double) _known_garbage_bytes / (double) heap_bytes; |
520 _known_garbage_ratio = (double) _known_garbage_bytes / (double) heap_bytes; |
523 } |
521 } |
524 |
522 |
525 G1MMUTracker* mmu_tracker() { |
523 G1MMUTracker* mmu_tracker() { |
526 return _mmu_tracker; |
524 return _mmu_tracker; |
|
525 } |
|
526 |
|
527 double max_pause_time_ms() { |
|
528 return _mmu_tracker->max_gc_time() * 1000.0; |
527 } |
529 } |
528 |
530 |
529 double predict_init_time_ms() { |
531 double predict_init_time_ms() { |
530 return get_new_prediction(_concurrent_mark_init_times_ms); |
532 return get_new_prediction(_concurrent_mark_init_times_ms); |
531 } |
533 } |
1006 virtual bool should_do_collection_pause(size_t word_size) = 0; |
1008 virtual bool should_do_collection_pause(size_t word_size) = 0; |
1007 |
1009 |
1008 // Choose a new collection set. Marks the chosen regions as being |
1010 // Choose a new collection set. Marks the chosen regions as being |
1009 // "in_collection_set", and links them together. The head and number of |
1011 // "in_collection_set", and links them together. The head and number of |
1010 // the collection set are available via access methods. |
1012 // the collection set are available via access methods. |
1011 virtual bool choose_collection_set() = 0; |
1013 virtual bool choose_collection_set(double target_pause_time_ms) = 0; |
1012 |
1014 |
1013 // The head of the list (via "next_in_collection_set()") representing the |
1015 // The head of the list (via "next_in_collection_set()") representing the |
1014 // current collection set. |
1016 // current collection set. |
1015 HeapRegion* collection_set() { return _collection_set; } |
1017 HeapRegion* collection_set() { return _collection_set; } |
1016 |
1018 |
1074 void clear_initiate_conc_mark_if_possible() { _initiate_conc_mark_if_possible = false; } |
1076 void clear_initiate_conc_mark_if_possible() { _initiate_conc_mark_if_possible = false; } |
1075 |
1077 |
1076 bool during_initial_mark_pause() { return _during_initial_mark_pause; } |
1078 bool during_initial_mark_pause() { return _during_initial_mark_pause; } |
1077 void set_during_initial_mark_pause() { _during_initial_mark_pause = true; } |
1079 void set_during_initial_mark_pause() { _during_initial_mark_pause = true; } |
1078 void clear_during_initial_mark_pause(){ _during_initial_mark_pause = false; } |
1080 void clear_during_initial_mark_pause(){ _during_initial_mark_pause = false; } |
|
1081 |
|
1082 // This sets the initiate_conc_mark_if_possible() flag to start a |
|
1083 // new cycle, as long as we are not already in one. It's best if it |
|
1084 // is called during a safepoint when the test whether a cycle is in |
|
1085 // progress or not is stable. |
|
1086 bool force_initial_mark_if_outside_cycle(); |
1079 |
1087 |
1080 // This is called at the very beginning of an evacuation pause (it |
1088 // This is called at the very beginning of an evacuation pause (it |
1081 // has to be the first thing that the pause does). If |
1089 // has to be the first thing that the pause does). If |
1082 // initiate_conc_mark_if_possible() is true, and the concurrent |
1090 // initiate_conc_mark_if_possible() is true, and the concurrent |
1083 // marking thread has completed its work during the previous cycle, |
1091 // marking thread has completed its work during the previous cycle, |
1257 class G1CollectorPolicy_BestRegionsFirst: public G1CollectorPolicy { |
1265 class G1CollectorPolicy_BestRegionsFirst: public G1CollectorPolicy { |
1258 CollectionSetChooser* _collectionSetChooser; |
1266 CollectionSetChooser* _collectionSetChooser; |
1259 // If the estimated is less then desirable, resize if possible. |
1267 // If the estimated is less then desirable, resize if possible. |
1260 void expand_if_possible(size_t numRegions); |
1268 void expand_if_possible(size_t numRegions); |
1261 |
1269 |
1262 virtual bool choose_collection_set(); |
1270 virtual bool choose_collection_set(double target_pause_time_ms); |
1263 virtual void record_collection_pause_start(double start_time_sec, |
1271 virtual void record_collection_pause_start(double start_time_sec, |
1264 size_t start_used); |
1272 size_t start_used); |
1265 virtual void record_concurrent_mark_cleanup_end(size_t freed_bytes, |
1273 virtual void record_concurrent_mark_cleanup_end(size_t freed_bytes, |
1266 size_t max_live_bytes); |
1274 size_t max_live_bytes); |
1267 virtual void record_full_collection_end(); |
1275 virtual void record_full_collection_end(); |