RFR: 8223837: Add -XX:MinHeapSize flag to set the minimum heap size

Per Liden per.liden at oracle.com
Tue Jun 4 07:48:42 UTC 2019

On 5/27/19 9:53 AM, Stefan Karlsson wrote:
> 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/

Looks good.

One minor nit, "MinimumHeapSizeConstraintFunc" should probably be 
"MinHeapSizeConstraintFunc", to match names of the related functions.


> 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