Print this page
G1: Use SoftMaxHeapSize to guide GC heuristics

*** 43,60 **** // Ratio check data for determining if heap growth is necessary. uint _ratio_over_threshold_count; double _ratio_over_threshold_sum; uint _pauses_since_start; protected: G1HeapSizingPolicy(const G1CollectedHeap* g1h, const G1Analytics* analytics); public: // If an expansion would be appropriate, because recent GC overhead had // exceeded the desired limit, return an amount to expand by. ! virtual size_t expansion_amount(); // Clear ratio tracking data used by expansion_amount(). void clear_ratio_check_data(); static G1HeapSizingPolicy* create(const G1CollectedHeap* g1h, const G1Analytics* analytics); --- 43,65 ---- // Ratio check data for determining if heap growth is necessary. uint _ratio_over_threshold_count; double _ratio_over_threshold_sum; uint _pauses_since_start; + // Mininum heap capacity after last concurrent mark + size_t _minimum_desired_bytes_after_last_cm; + protected: G1HeapSizingPolicy(const G1CollectedHeap* g1h, const G1Analytics* analytics); public: // If an expansion would be appropriate, because recent GC overhead had // exceeded the desired limit, return an amount to expand by. ! virtual size_t expansion_amount_after_young_collection(); ! virtual size_t expansion_amount_after_concurrent_mark(); ! virtual size_t shrink_amount_after_mixed_collections(); // Clear ratio tracking data used by expansion_amount(). void clear_ratio_check_data(); static G1HeapSizingPolicy* create(const G1CollectedHeap* g1h, const G1Analytics* analytics);