RFR 8037924: CMM Testing: Check Min/MaxHeapFreeRatio flags allows to shrink the heap when using ParallelGC
Andrey Zakharov
andrey.x.zakharov at oracle.com
Sun Mar 30 08:03:45 UTC 2014
Hi! Here is webrev.08,
Jesper, can you upload it? Thanks!
Igor, thanks for well detailed review!
On 30.03.2014 02:33, Igor Ignatyev wrote:
> Andrey,
>
> 1. both tests:
>> 48 public void eat() {
>> 61 public void free() {
> change visibility of concrete methods to protected
> 2. TestHumongousShrinkHeap
>> 32 */
>> 33 import com.oracle.java.testlibrary.gc.MemoryUsagePrinter;
> add empty line between these lines or remove empty line #32 in
> TestDynShrinkHeap
>> 62 //do not free last one list
> space after '//'
> 3. both tests:
>> 26 * @bug 8037924
>> 26 * @bug 8037925
> after @bug you should specify product bug ids which can be tested by
> this test. I guess 8016479 instead of 8037924, and 8036025/8037925.
>
> otherwise it looks good, thank you for your work and patience )
>
> Igor
>
> On 03/30/2014 02:21 AM, Jesper Wilhelmsson wrote:
>> 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.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 8037924.tar.gz
Type: application/gzip
Size: 116024 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20140330/3613214d/8037924.tar.gz>
More information about the hotspot-gc-dev
mailing list