Free ratio based heap shrinking in the parallel collector

Hiroshi Yamauchi yamauchi at google.com
Thu Apr 29 14:48:26 PDT 2010


OK. No problem.

On Thu, Apr 29, 2010 at 1:58 PM, Jon Masamitsu <jon.masamitsu at oracle.com> wrote:
> 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