一、虚拟机参数配置文档
二、配置分析说明
参数理解:https://www.cnblogs.com/likehua/p/3369823.html
1、初始配置
-Xms128m // 初始堆大小
-Xmx128m // 最大堆大小
-XX:NewSize=64m // 设置年轻代大小
-XX:PermSize=64m
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=78
-XX:ThreadStackSize=128k-Xloggc:logs/gc.log
-Dsun.rmi.dgc.server.gcInterval=3600000
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.server.exceptionTrace=true
-XX:PermSize
JVM使用设置非堆内存初始值,默认是物理内存的1/64,
在数据量的很大的文件导出时,一定要把这两个值设置上,否则会出现内存溢出的错误。
由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
那么,如果是物理内存4GB,那么64分之一就是64MB,这就是PermSize默认值,也就是永生代内存初始大小;
四分之一是1024MB,这就是MaxPermSize默认大小。
源自:https://blog.51cto.com/sucre/558133
-XX:NewSize 和 -Xmn
<1> -XX:newSize:表示新生代初始内存的大小,应该小于-Xms的值;
<2> -XX:MaxnewSize:表示新生代可被分配的内存的最大上限;当然这个值应该小于-Xmx的值;
<3> -Xmn:至于这个参数则是对 -XX:newSize、-XX:MaxnewSize两个参数的同时配置,
也就是说如果通过-Xmn来配置新生代的内存大小,那么-XX:newSize = -XX:MaxnewSize = -Xmn,虽然会很方便,
但需要注意的是这个参数是在JDK1.4版本以后才使用的。
问题:
<a> permsize 设置较小,很容易达到报警范围(0.8)
<b> 没有设置MaxPermSize,堆增长会带来额外压力。
<c> NewSize较大,old gen 剩余空间64m,
一方面可能会带来old区容易增长到报警范围(监控数据显示oldgenused长期在50m左右,接近78%,容易出现full gc),
另一方面也存在promontion fail风险。```
https://www.cnblogs.com/gxyandwmm/p/9456955.html
三、其它
-Xss //选置栈内存的大小
-XX:NewRatio=n: //设置年轻代和年老代的比值。比如设置为3,表示年轻代与年老代比值为1:3
-XX:SurvivorRatio=n: //年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。比如设置为3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5。
https://www.cnblogs.com/shamo89/p/9806718.html
https://blog.youkuaiyun.com/yswKnight/article/details/79372276
https://blog.youkuaiyun.com/jackyzheng/article/details/70786746