-XX:MaxHeapFreeRatio=<maximum>, where maximum – is maximum proportion of free space at each collection. Its total size is bound by –Xmx<max> value.
Set maxHeapFreeRatio to 80%:
Different options affects generation size. During initialization of the JVM, the entire space for the heap is reserved. The size of the reserved space can be specified with the -Xmx option. If the value of the -Xms parameter is smaller than the value of the -Xmx parameter, then not all of the space that's reserved is immediately committed to the virtual machine. The uncommitted space is called “virtual”. The different parts of the heap, so called old and young generations, can grow to the limit of the virtual space as needed.
Default value for -XX:MaxHeapFreeRatio is dependent on JVM, for instance default option for the 64-bit Solaris operating system (SPARC Platform Edition) is 70, meaning that if the free space exceeds 70%, then the generation contracts so that only 70% of the space is free, subject to the minimum size of the generation.
Should be greater or equals to the value set in -XX:MinHeapFreeRatio
TODO link MinHeapFreeRatio, Xmx, Xms
If you have additional comments, interesting experiences or even point of disagreement with this JVM argument description, please leave a comment. Your insights will help the entire 10+ million java developer community to develop one standard source of documentation for all the JVM arguments.