堆相关
堆heap分为新生代和老年代
-Xms
堆初始化
默认值为:堆初始化时借用剩余物理内存的1/64
-Xmn
新生代的大小
整个堆的3/8,-Xmn = eden + S0 + S1
JAVA_OPTS后追加-XX:SurvivorRatio=x设置比例来配置eden,S0,S1.
默认值为8
-Xmx
整个堆的大小,是剩余物理内存的1/4
老年代-Xmx - -Xmn
堆参数总结:
- jvm内存都是从剩余物理内存上借的,tomcat启动成功即jvm配置成功
- -Xmx 和-Xms设置一样
理由:-Xms默认值是剩余物理内存的1/64,内存值较小;当大并发流量增大,new的数据较多,会出现-Xms内存不够用情况,此时还需要向物理内存申请借用,借用时会遇到两种情况。
a.物理内存已无过多空闲内存,即没借到内存,造成java程序new数据无地方存储
b.从物理内存借到了内存,但此时java程序在等待,消耗时间。
栈相关
参数
-XX:PermSize
栈初始化内存是剩余物理内存的1/64
-XX:MaxPermSize
栈最大的内存是剩余物理内存的1/4
栈参数总结
两个参数-XX:PermSize 和-XX:MaxPermSize设置一样
理由:-XX:PermSize 默认值是剩余物理内存的1/64,内存值较小;当并发流量增大时,new的数据较多故对象也较多,会出现初始化栈内存不够用,此时需要向剩余物理内存中申请借用,借用时会遇到两种情况:
情况1:物理内存已无空闲内存,故没接到内存,造成java对象没空间存储
情况2:从物理内存借到内存,但此过程java程序在等待,消耗时间
堆栈配置命令
JAVA_OPT="-server -Xmx425M -Xms425M -Xmn159M -XX:MaxPermSize=128M -XX:PermSize=128M"
jvm配置步骤
- 停掉tomcat ,通过kill -9 进程号或者sh shutdown.sh
- vim tomcat/bin/catalina.sh
jvm配置到107行的上方,因为tomcat中bin目录下一旦启动,就加载配置文件也是一个shell文件,让jvm优先进行地址的申请。 - jvm配置
- cd tomcat/bin && sh startup.sh