RFR: 8223837: Add -XX:MinHeapSize flag to set the minimum heap size
Stefan Karlsson
stefan.karlsson at oracle.com
Mon May 27 07:53:36 UTC 2019
Hi all,
Please review this patch to add -XX:MinHeapSize flag to set the minimum
heap size.
http://cr.openjdk.java.net/~stefank/8223837/webrev.01/
https://bugs.openjdk.java.net/browse/JDK-8223837
Currently the -Xms flag is documented to set the initial heap size, but
it also sets the minimum heap size. The initial heap size can be
overridden with the -XX:InitialHeapSize flag, but there is no such flag
for the minimum heap size.
To set the minimum heap size to a value different than the initial heap
size the user must specify -Xms before -XX:InitialHeapSize.
For example:
-Xms4g -XX:InitialHeapSize=8g sets the minimum size to commit for the
heap to 4g and the initially committed heap size to 8g.
On the other hand, the following command line:
-XX:InitialHeapSize=8g -Xms4g sets both the minimum and initial heap
size to 4g.
This RFE proposes that we introduce a -XX:MinHeapSize flag to make it
easier to independently set the minimum heap size and initial heap size.
The user will get the expected behavior from either of the following
command lines:
-XX:MinHeapSize=4g -XX:InitialHeapSize=8g
-XX:InitialHeapSize=8g -XX:MinHeapSize=4g
The -Xms flag will keep it's old behavior and set both minimum and
initial heap size, but when setting the minimum heap size it will change
the MinHeapSize flag and not a JVM internal global variable. -Xms will
behave as if both -XX:MinHeapSize and -XX:InitialHeapSize were set on
the command line.
The VM will enforce the relationship:
MinHeapSize <= InitialHeapSize <= MaxHeapSize
I've created a CSR for this (JDK-8223852), but have not moved it out of
draft yet. I'm also thinking about making MinHeapSize manageable, to
allow the users to change the value the JVM is running, using our
management APIs. Either I fold that into the same CSR, or I simply
create a new CSR to cover that change.
Tested with updated version of TestMaxHeapSizeTools.java, to only cover
cases where MinHeapSize is set. That tool is used by the tests in
Test<GC>HeapSizeFlags.java. Other suggestions of testing for this would
be appreciated.
Thanks,
StefanK
More information about the hotspot-gc-dev
mailing list