JVM常用配置参数说明

堆设置

-Xms256M:初始堆大小256M,默认为物理内存的1/64

-Xmx1024M:最大堆大小1024M,默认为物理内存的1/4,等于与-XX:MaxHeapSize=64M

-Xmn64M:年轻代大小为64M(JDK1.4后支持),相当于同时设置NewSize和MaxNewSize为64M

-XX:NewSize=64M:初始年轻代大小

-XX:MaxNewSize=256M:最大年轻代大小(默认为堆最大值的1/3)

-XX:OldSize=64M:年老代大小64M(测试验证JDK1.8.191该参数设置无效,JDK11下设置成功)

-XX:NewRatio=4:年老代:年轻代=4:1,默认值2

-XX:SurvivorRatio=8:年轻代中,2个Survivor区与1个Eden区比例=2:8,Survivor占新生代内存比例为1/5,默认值8

-XX:MaxHeapFreeRatio=70:堆内存使用率大于70时扩张堆内存,xms=xmx时该参数无效,默认值70

-XX:MinHeapFreeRatio=40:堆内存使用率小于40时缩减堆内存,xms=xmx时该参数无效,默认值40

备注:

堆大小=年轻代(Young Generation)+年老代(Old Generation),网上有同学将持久代归为堆内存,感觉是错误的。

年轻代=伊甸园区(Eden Space) + 2个幸存者区(Survivor Space,分别叫from和to)。

非堆设置--持久代设置

-XX:PermSize=56M:初始分配的持久代容量,默认为物理内存的1/64(从1.8起,该参数已作废,可使用-XX:MetaspaceSize替代)

-XX:MaxPermSize=56M:持久代的最大容量,默认为物理内存的1/4,设置值过小会导致java.lang.OutOfMemoryError: PermGen space错误。(从1.8起,该参数已作废,可使用-XX:MaxMetaspaceSize替代)

 

非堆设置--虚拟机栈

-Xss128k:虚拟机栈大小为128k

非堆设置--元空间(JDK1.8新增)

-XX:MetaspaceSize=64M:初始元空间大小

-XX:MaxMetaspaceSize=512M:最大元空间大小

GC相关

-Xnoclassgc:关闭JVM垃圾回收功能

-XX:+UseG1GC:使用G1垃圾回收器

-XX:+DisableExplicitGC:静止Java程序中的FULL GC,如System.gc()

-XX:PrintGCDetails:GC时打印详细信息

-XX:PrintGC:GC时打印信息

-XX:PrintHeapAtGC:GC时打印堆前后信息

其他

-XX:+HeapDumpOnOutOfMemoryError:内存溢出时Dump出当前堆内存快照

猜你喜欢

转载自www.cnblogs.com/zhi-leaf/p/10627949.html
今日推荐