Free ratio based heap shrinking in the parallel collector

Jon Masamitsu jon.masamitsu at oracle.com
Thu Apr 29 13:58:14 PDT 2010


Hiroshi,

These changes are what I was expecting after
we had talked.  I still have to look at the details but may not
get to those for a couple of days.

Jon

On 04/28/10 13:37, Hiroshi Yamauchi wrote:
> Jon,
>
> Here's an update based on what we discussed:
>
>   http://cr.openjdk.java.net/~rasbold/69XXXXX/webrev.02/
>
> The summary of the latest changes is that
>
> 1. On minor collections, the free ratio is computed based on the young
> gen heap, rather than both the young gen and the old gen heaps.
>
> 2. When -XX:-UseAdaptiveSizePolicy, the free ratio based resizing
> happens on normal collections, rather than just on System.gc() when
> -XX:+PSResizeByFreeRatioWithSystemGC.
>
> Hiroshi
>
>
> On Tue, Apr 13, 2010 at 11:21 AM, Hiroshi Yamauchi <yamauchi at google.com> wrote:
>   
>> Hi Jon,
>>
>> I finally got to this. Here's the webrev for a second version based on
>> our discussion (thanks to Chuck Rasbold):
>>
>>  http://cr.openjdk.java.net/~rasbold/69XXXXX/webrev.01/
>>
>> The summary of change is that the logic for expansion based on
>> MinHeapFreeRatio was added and only the flag for the System.gc was
>> retained (and renamed to PSResizeByFreeRatioWithSystemGC.)
>>
>> Thanks,
>> Hiroshi
>>
>>
>> On Thu, Apr 1, 2010 at 9:02 AM, Jon Masamitsu <jon.masamitsu at oracle.com> wrote:
>>     
>>> On 03/31/10 11:26, Hiroshi Yamauchi wrote:
>>>       
>>>> ...
>>>>
>>>> I think we agree that it's a good idea to try to shrink the heap in
>>>> response to System.gc() in such a scenario/app.
>>>>         
>>> Yes on the shrinking on a System.gc() and perhaps for symmetry also
>>> expanding
>>> a small heap to MinFreeHeapRatio?  UseAdaptiveSizePolicy will shrink the
>>> heap
>>> down during periods of low activity and it might be useful to swiftly expand
>>> the
>>> heap on a System.gc().
>>>       
>>>> Since we are talking about a setting where the free ratio flags takes
>>>> precedence over the psAdaptiveSizePolicy's throughput goals, the suggested
>>>> logic in the original webrev is perhaps not so terrible? If so, I suppose
>>>> the logic for UseFreeRatioOnlyInSystemGCForParallelGC does help with that
>>>> because it can shrink the heap regardless of the throughput goal. It may
>>>> make sense to remove UseFreeRatioForParallelGC and keep
>>>> UseFreeRatioOnlyInSystemGCForParallelGC only. If you'd like to see it happen
>>>> inside psAdaptiveSizePolicy instead, the current webrev does not work.
>>>>
>>>>         
>>> I like the structure of the original webrev with regard to the logic for
>>> using FreeRation.  It's simpler than embedding it in the
>>> PSAdaptivesizePolicy.
>>>
>>>
>>> 243     if (UseFreeRatioOnlyInSystemGCForParallelGC &&
>>> 245           gc_cause == GCCause::_java_lang_system_gc)) {
>>>          compute_new_size();  <<<<<<<<  generalization of
>>>              <<<<<<<<  try_to_shrink_by_free_ratio()
>>> 248     } else {
>>>          use current UseAdaptiveSizePolicy
>>>        }
>>>
>>>
>>>
>>>
>>>
>>>       



More information about the hotspot-gc-dev mailing list