RFR 8037924: CMM Testing: Check Min/MaxHeapFreeRatio flags allows to shrink the heap when using ParallelGC
Jesper Wilhelmsson
jesper.wilhelmsson at oracle.com
Sat Mar 29 22:21:29 UTC 2014
Hi, New webrev in place:
http://cr.openjdk.java.net/~jwilhelm/8037924/webrev.07/
/Jesper
Andrey Zakharov skrev 29/3/14 20:57:
> Hi, here updated webrev.
> Jesper, can you, please, upload it to your webspace.
> Igor, please, see comment below, everything uncommented is done.
> Thanks.
>
> On 29.03.2014 20:08, Igor Ignatyev wrote:
>> why isn't 'TestDynShrinkHeap.gc()' 'TestShrinkHeap.gc()'?
> I cut this out.
>> 5. if you need assured fullGC, we have WhiteBox API for it --
>> s.h.WhiteBox.fullGC()
>>
> Not sure is it applicable for me, because every time in feature ticket
> descriptions I see "System.gc()", so... let it be.
>> Thanks
>> Igor
>>
>> On 03/29/2014 07:37 PM, Andrey Zakharov wrote:
>>> 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