RFR(S): JDK-8028093 - Initial young size is smaller than minimum young size
jesper.wilhelmsson at oracle.com
Mon Nov 11 11:03:52 UTC 2013
The intention of the min_gen1_size argument is to make sure there is space left
in the heap for the old generation. The minimum size of the old generation is
_min_gen1_size in both cases. In the current code you can see that the argument
I want to remove is called min_gen1_size and the code expects to be called with
_min_gen1_size at all times. This was also the case before the fix for
JDK-8016309, so this bug was actually introduced by the collector policy cleanup.
Bengt Rutisson skrev 11/11/13 10:32 AM:
> Hi Jesper,
> This looks wrong to me.
> adjust_gen0_sizes() is first called with the min values to adjust them. Then
> called with the initial values to adjust them. With your suggested change we
> suddenly mix min and initial values when we adjust. That seems very strange to me.
> If the issue is that the min and initial values don't match I think we should
> add a third step where we explicitly adjust them to match. Something like:
> adjust_gen0_sizes(&_min_gen0_size, &_min_gen1_size, _min_heap_byte_size,
> adjust_gen0_sizes(&_initial_gen0_size, &_initial_gen1_size,
> _initial_heap_byte_size, _initial_gen1_size);
> On 2013-11-10 00:17, Jesper Wilhelmsson wrote:
>> Can I have a couple of reviews of this small bugfix.
>> Bug JDK-8028093: https://bugs.openjdk.java.net/browse/JDK-8028093
>> The problem is that TwoGenerationCollectorPolicy::adjust_gen0_sizes() is
>> called with the wrong argument in one place. The last argument should always
>> be the value of _min_gen1_size, but in one call it is the _initial_gen1_size.
>> Since these variables are class local I see no reason to take _min_gen1_size
>> as an argument at all. Apparently it is error prone. The proposed fix is
>> therefore to remove the argument and use _min_gen1_size directly in
>> Webrev: http://cr.openjdk.java.net/~jwilhelm/8028093/webrev/
More information about the hotspot-gc-dev