-Xms指定:JVM初始分配的堆内存由,默认是物理内存的1/64;
-Xmx指定:JVM最大分配的堆内存由,默认是物理内存的1/4。
服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。
-XX:NewSize 和 -Xmn(-XX:MaxNewSize)指定:JVM启动时分配的新生代内存和新生代最大内存。
-XX:OldSize:设置JVM启动分配的老年代内存大小,类似于新生代内存的初始大小-XX:NewSize。
-XX:SurvivorRatio指定:设置新生代中1个Eden区与1个Survivor区的大小比值。默认SurvivorRatio=8,那么Eden与2个Survivor区各占比为8:1:1。
-XX:NewRatio指定:老年代/新生代的堆内存比例。默认XX:NewRatio=2表示年轻代与年老代所占比值为1:2。在设置了-XX:MaxNewSize的情况下,-XX:NewRatio的值会被忽略,老年代的内存=堆内存 - 新生代内存。老年代的最大内存 = 堆内存 - 新生代 最大内存。
-XX:PermSize 和 -XX:MaxPermSize:指定JVM中的永久代(方法区)的大小。永久代不属于堆内存,堆内存只包含新生代和老年代。
JVM堆内存申请、释放条件
默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。