After reading already asked question on the subject and a lot of googling I am still not able to have a clear view of -Xms option
My question is: what's the difference between java -Xms=512m -Xmx=512m
and java -Xms=64m -Xmx=512m
?
For now I have the following answer:
The only difference is in the number of garbage collections that will be run during my application's run and the number of memory allocations. Am I right ?
Here are my reasons for this answer:
Setting the -Xms
option to 512m
doesn't result in my application using really 512M
of physical memory after startup. I guess this is related to modern OS virtual memory management and lazy pages allocations. (I noticed that setting -Xms
to 512M
or to 64M
doesn't change at all the initial used memory reported either by top on Linux or by the task manager on windows)
Can someone help me to understand the impact of this Xms
option or point me to links that will help me to understand it?
Thanks in advance
Manu
The JVM will start with memory useage at the initial heap level. If the maxheap is higher, it will grow to the maxheap size as memory requirements exceed it's current memory.
So,
JVM starts with 512 M, never resizes.
JVM starts with 64M, grows (up to max ceiling of 512) if mem. requirements exceed 64.