1、指定堆内存大小
初始堆空间内存 ,-Xms(默认为物理内存的1/64)
最大堆空间内存,-Xmx(默认为物理内存的1/4)
通常配置为相同的值,目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小,从而提高性能
-Xms2G -Xmx2G
2、指定新生代内存 -XX:NewSize和-XX:MaxNewSize
#给新生代分配最小256m内存,最大1024m内存
-XX:NewSize=256m
-XX:MaxNewSize=1024m
如果新生代最小和最大内存一致,则可以简写为
-Xmn1024m
3、指定新生代和老年代内存的比例 -XX:NewRatio
#表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:NewRatio=3
4、年轻代中Eden区与两个Survivor区的比值-XX:SurvivorRatio
#表示Eden区占新生代的3/5,一个Survivor区占整个年轻代的1/5
-XX:SurvivorRatio=3
5、设置方法区大小
a、 JDK1.8之前
#方法区(永久代)初始大小,默认是20.75M
-XX:PermSize=N
#方法区(永久代)最大大小,32位机器默认64M,64位机器默认82M,超过这个值会OOM
-XX:MaxPermSize=N
b、JDK1.8之后
#方法区(元空间)初始大小,默认21M
-XX:MetaspaceSize=N
#方法区(元空间)最大大小,默认是-1,没有限制,不指定大小,虚拟机会耗尽所有的系统内存,报OOM
-XX:MaxMetaspaceSize=N