-Xms : Initial heap size or minimum heap size?

2020-07-01 03:02发布

问题:

-Xms is to specify initial heap size or minimum heap size? I see lot of places with lot of different answers. Some like second answer here, say that it is for initial heap and some like here say that its minimum heap size. Or is it that the minimum size itself is the initial size?

回答1:

The initial heap size is the minimum heap size. It won't get smaller than the initial heap size.

From Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine:

By default, the virtual machine grows or shrinks the heap at each collection to try to keep the proportion of free space to live objects at each collection within a specific range. This target range is set as a percentage by the parameters -XX:MinHeapFreeRatio= and -XX:MaxHeapFreeRatio=, and the total size is bounded below by -Xms and above by -Xmx .



回答2:

From running java -X:

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
-Xss<size>        set java thread stack size

Note that -X options are not guaranteed to exist on all VMs or behave the same on all VMs. For example -Xms could format your hard drive depending on the VM (it would not - but strictly speaking it could :-) (typing java by itself gives the help with this line: "-X print help on non-standard options").