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 12:19:28 UTC 2014
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.
>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>
>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 8037924.tar.gz
Type: application/gzip
Size: 76512 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20140329/866d45ff/8037924.tar.gz>
More information about the hotspot-gc-dev
mailing list