Analysis of Xms and InitialHeapSize parameters in the VM

-Xms and -XX:InitialHeapSize

This page tries to summarize the changes of the relation between -Xms and -XX:InitialHeapSize in the changeset for 8006088.

Generally -Xms sets both minimum and initial heap size, while -XX:InitialHeapSize only sets initial heap size. The table below shows for all input combinations of -Xms and -XX:InitialHeapSize in the first two columns the resulting minimum and initial heap size in a current patch compared to the current (old) behavior.

The input values have the following meaning:

Input value meaning

not set

the value has not been set on the command line

0

value=0 set on the command line

S

value < NewSize + OldSize

X

value >= NewSize + OldSize

The output values have the following meaning:

Output value meaning

Ergo

value has been chosen ergonomically. The ergonomics for minimum and initial heap size are different. For minimum heap size, the VM typically chooses NewSize + OldSize, for initial heap size a fraction of physical memory or maximum heap size. The string may contain additional constraints for the value.
The ergonomics algorithm is the same in both the new and old behavior shown below.

S, X

the value S or X

Error

the VM prints some error message

Here is the table.

Bold cells indicate that the behavior seems unexpected.

Input values

 

New behavior

 

Old behavior

 

-Xms

-XX:InitialHeapSize

Minimum Heap Size

Initial Heap Size

Minimum Heap Size

Initial Heap Size

not set

not set

Ergo

Ergo

Ergo

Ergo

not set

S

S

S

Error

Error

not set

X

Ergo <= X

X

Ergo <= X

X

not set

0

Ergo

Ergo

Ergo

NewSize + OldSize

0

not set

Ergo

Ergo

Error

Error

0

S

S

S

Error

Error

0

X

Ergo <= X

X

Error

Error

0

0

Ergo

Ergo

Error

Error

S

not set

S

S

S

S

S_1

S_2

S_1

S_2

S_1

S_2

S

X

S

X

S

X

S

0

S

Ergo

S

Ergo

X

not set

X

X

X

X

X

S

Error

Error

Error

Error

X_1

X_2

X_1

X_2

X_1

X_2

X

0

X

Ergo >= X

Error

Error

Additional notes: