RFR (S): 8067438: Add test to verify minimal heap size
Bengt Rutisson
bengt.rutisson at oracle.com
Tue Dec 16 11:16:25 UTC 2014
Hi Dima,
Thanks for looking at this!
On 2014-12-15 15:06, Dmitry Fazunenko wrote:
> Hi Bengt,
>
> The test looks good, but summary needs to be updated.
>
> 28 * @summary Verify that the heap gets set up to the expected size
>
> From this summary it's not clear, that the test is for the minimal
> supported Xmx value.
Good point. I updated the summary, but I also changed the test a bit.
See below.
>
> Would it make more tests to for minimal heap size?
> - setting -Xmx from 1024k to 2047k is equivalent to setting 2m.
> - vm doesn't start if Xmx1023k and less
You point out a rather strange behavior. The reason the VM does not
start with 1023K is actually not that we check the maximum heap size
(Xmx) but that we check the initial heap size (Xms). Xms must be larger
than 1m otherwise the VM does not start. According to the specification
of -Xmx it has to be at least 2m:
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
...but we don't check that. We just silently increase the heap size from
1m to 2m and start the VM if you run with -Xmx1m. I find this more of a
bug than a feature we want to test. So, I prefer to file a bug report
against that behavior instead of including this in the test.
Another interesting aspect is that the max heap size is aligned to fill
up the memory that is covered by the card table we set up. We size the
card table to be aligned with the os page size. Each byte in the card
table corresponds to 512 bytes of heap memory. This means that if we
have 4K pages, each pages committed for the card table corresponds to 2m
of heap. But if we have 8K pages one card table page will correspond to
4m of heap. Essentially this means that the heap is aligned to 2m or 4m
based on the minimal os page size.
On most platforms the minimum page size is 4k but on Sparc it is 8k. So,
the test I suggested in webrev.00 actually fails on Sparc.
Again I think this is a strange behavior that I'd rather consider a bug
than a behavior we want to verify in a test.
So, my suggestion is to file two bugs for these issues and instead of
testing the minimum heap size according to the specification I'll just
test that a small heap works. If I use 4m for the test it should work on
all our supported platforms. What do you think about this approach?
Here's an updated webrev with a test that uses 4m. Note that the test
changed its name to TestSmallHeap.
http://cr.openjdk.java.net/~brutisso/8067438/webrev.01/
Thanks,
Bengt
>
> Thanks,
> Dima
>
>
> On 15.12.2014 16:19, Bengt Rutisson wrote:
>>
>> Hi everyone,
>>
>> Can I have a couple of reviews for this small test to verify that the
>> VM starts with a minimum heap size of 2mb?
>>
>> http://cr.openjdk.java.net/~brutisso/8067438/webrev.00/
>>
>> https://bugs.openjdk.java.net/browse/JDK-8067438
>>
>> Thanks,
>> Bengt
>
More information about the hotspot-gc-dev
mailing list