RFR 8037924: CMM Testing: Check Min/MaxHeapFreeRatio flags allows to shrink the heap when using ParallelGC

Andrey Zakharov andrey.x.zakharov at oracle.com
Sat Mar 29 15:37:18 UTC 2014


Hi, team!
webrev: http://cr.openjdk.java.net/~jwilhelm/8037924/webrev.06/
bug: https://bugs.openjdk.java.net/browse/JDK-8037924
bug: https://bugs.openjdk.java.net/browse/JDK-8037925

Thanks.

On 29.03.2014 16:19, Andrey Zakharov wrote:
> Hi, Igor, here is just non-uploaded attachment to review. It will be 
> upload later.
> Thanks.
>
> On 29.03.2014 12:10, Igor Ignatyev wrote:
>> TestDynShrinkHeap:
>>>  45     public static byte[] temp;
>> unused field
>>
>> it looks like 'g1/TestHumongousShrinkHeap.java' and 
>> 'parallelScavenge/TestDynShrinkHeap.java' should have one super class,
>>
>> abstract class TestDyn {
>>
>> protected static final String MIN_FREE_RATIO_FLAG_NAME = 
>> "MinHeapFreeRatio";
>> protected static final String MAX_FREE_RATIO_FLAG_NAME = 
>> "MaxHeapFreeRatio";
>>
>> protected abstract void eat();
>>
>> protected abstract void free();
>>
>> public final void test() {
>>   gc();
>>   MemoryUsagePrinter.printMemoryUsage("init");
>>   eat();
>>   MemoryUsagePrinter.printMemoryUsage("eaten");
>>   MemoryUsage muFull = 
>> ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
>>   free();
>>   MemoryUsage muFree = 
>> ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
>>   if (!(muFree.getCommitted() < muFull.getCommitted())) {
>>     throw new RuntimeException(
>>       String.format("committed free heap size is not less than 
>> committed full heap size, heap hasn't been shrunk?%n%s = %s%n%s = %s",
>>                       MIN_FREE_RATIO_FLAG_NAME,
>>
>> ManagementFactoryHelper.getDiagnosticMXBean().getVMOption(MIN_FREE_RATIO_FLAG_NAME).getValue(), 
>>
>>                       MAX_FREE_RATIO_FLAG_NAME,
>>
>> ManagementFactoryHelper.getDiagnosticMXBean().getVMOption(MAX_FREE_RATIO_FLAG_NAME).getValue() 
>>
>>               )
>>       );
>>   }
>>   gc();
>>   MemoryUsagePrinter.printMemoryUsage("done");
>> }
>>
>> public static void gc() {
>>   MemoryUsagePrinter.printMemoryUsage("before full GC");
>>   System.gc();
>>   MemoryUsagePrinter.printMemoryUsage("after full GC");
>> }
>>
>>
>> }
>>
>>
>>
>> Igor
>>
>> On 03/29/2014 10:59 AM, Andrey Zakharov wrote:
>>> Hi, here is updated webrev:
>>> http://cr.openjdk.java.net/~jwilhelm/8037924/webrev.05/
>>> Any comments are welcome.
>>> Thanks.
>>>
>>> On 28.03.2014 19:28, Igor Ignatyev wrote:
>>>> On 03/28/2014 06:06 PM, Andrey Zakharov wrote:
>>>>>
>>>>> On 28.03.2014 17:48, Igor Ignatyev wrote:
>>>>>> Andrey,
>>>>>>
>>>>>>>> And as I said in 8037925:
>>>>>>>>> You don't need to use enum here and string constant (Labels.*) in
>>>>>>>>> TestDynShrinkHeap. I've mistakenly think that MemoryUsagePrinter
>>>>>>>>> uses
>>>>>>>>> String argument to change its own behavior. Sorry for useless 
>>>>>>>>> extra
>>>>>>>>> work.
>>>>>> Please remove class 'Labels', it's unnecessary and just decrease
>>>>>> readability.
>>>>> Ok
>>>>>>
>>>>>>>>>>   26  * @key gc
>>>>>>>>> why do you need this?
>>>>>>>> Hm, used as common practice.
>>>>>> if you don't understand meaning of '@key gc', please don't use it.
>>>>> I think that this is used for test execution - to execute all test 
>>>>> that
>>>>> relates to "gc" for example.
>>>> All test related to "gc" are located in test/gc, so we don't need it
>>>>>>
>>>>>> otherwise it looks good.
>>>>>>
>>>>>> Igor
>>>>>>
>>>>>> On 03/28/2014 05:37 PM, Andrey Zakharov wrote:
>>>>>>> Hi, here is updated webrev:
>>>>>>> http://cr.openjdk.java.net/~jwilhelm/8037924/webrev.04/
>>>>>>> Thanks.
>>>>>>>
>>>>>>> On 28.03.2014 02:29, Igor Ignatyev wrote:
>>>>>>>> Andrey,
>>>>>>>> you've placed the wrong link, the correct one is
>>>>>>>> http://cr.openjdk.java.net/~jwilhelm/8037924/webrev.02/.
>>>>>>>> And as I said in 8037925:
>>>>>>>>> You don't need to use enum here and string constant (Labels.*) in
>>>>>>>>> TestDynShrinkHeap. I've mistakenly think that MemoryUsagePrinter
>>>>>>>>> uses
>>>>>>>>> String argument to change its own behavior. Sorry for useless 
>>>>>>>>> extra
>>>>>>>>> work.
>>>>>>>>
>>>>>>>> MemoryUsagePrinter:
>>>>>>>>>   44         float freeratio = 1f - (float) memusage.getUsed() /
>>>>>>>>> memusage.getCommitted();
>>>>>>>> I'd prefer '1.0f', but it's only my fad, it's not necessary to
>>>>>>>> change.
>>>>>>>>
>>>>>>>> TestDynShrinkHeap:
>>>>>>>>>   96 StringBuilder strb = new StringBuilder("committed
>>>>>>>>> heap size under pressure is not less than committed full heap 
>>>>>>>>> size,
>>>>>>>>> heap hasn't been shrunk?");
>>>>>>>>>   97 strb.append(System.getProperty("line.separator"));
>>>>>>>>>   98             strb.append(MinFreeRatioFlagName + " = " +
>>>>>>>>> minHeapFreeValue);
>>>>>>>>>   99 strb.append(System.getProperty("line.separator"));
>>>>>>>>>  100             strb.append(MaxFreeRatioFlagName + " = " +
>>>>>>>>> maxHeapFreeValue);
>>>>>>>>>  101             throw new RuntimeException(strb.toString());
>>>>>>>> it can be replaced by:
>>>>>>>>  throw new RuntimeException(String.format("committed heap size 
>>>>>>>> under
>>>>>>>> pressure is not less than committed full heap size, heap hasn't 
>>>>>>>> been
>>>>>>>> shrunk?%n%s=%d%n%s=%n",MinFreeRatioFlagName,minHeapFreeValue,MaxFreeRatioFlagName,maxHeapFreeValue)); 
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> but it's also not necessary.
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Igor
>>>>>>>>
>>>>>>>> On 03/27/2014 04:42 PM, Andrey Zakharov wrote:
>>>>>>>>> Here is updated webrev with string constants:
>>>>>>>>> http://cr.openjdk.java.net/~jwilhelm/8037925/webrev.02/
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 26.03.2014 20:02, Andrey Zakharov wrote:
>>>>>>>>>> Test to check that ParallelGC respect dynamic change of
>>>>>>>>>> MaxFreeRatio
>>>>>>>>>> and shrinks heap.
>>>>>>>>>> webrev: http://cr.openjdk.java.net/~jwilhelm/8037924/webrev/
>>>>>>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8037924
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>>
>




More information about the hotspot-gc-dev mailing list