Free ratio based heap shrinking in the parallel collector
Jon Masamitsu
jon.masamitsu at oracle.com
Thu Apr 29 20:58:14 UTC 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