JVM配置
- 基础知识:
静态分配:静态分配
动态分配 - 配置步骤:在Tomcat/bin/catalina.sh里面添加JAVA_OPTS=' -server -Xmx500M -Xms500M -Xmn200M -XX:MaxPerm Size=128 -XX:PermSize=128'
- 堆栈结构图:
- heap堆:新生代 -Xmn eden区 总结:1、-Xmn=Eden+S0+S1=200
S0区 2、新生代三个区的分配方法
S1区 A:在java_OPTS后追加 -xx:SurvivoRatio=xx 设置比例
老年代 -Xmx减Xmn B:不设置默认 -XX:SurvivorRatio=8
注:建议使用默认
概念解读:
-Xms=500m 堆初始化时启动的内存,剩余物理内存的1/64
-Xmx=500m 整个堆最大的内存,剩余物理内存的1/4
-Xmn=200m 新生代3/8
总结:
1、jvm内存是从物理内存借用的,Tomcat启动成功即jvm从物理内存分配内存内存也成功
2、-Xmx和-Xms设置一样
理由:-Xms默认是物理内存的1/64,内存值较小,当大并发流量增大,new的数据较多,会出现-Xms内存不够用的情况,此时还需临时向物理内存申请借用,借用时会遇到以下两种情况
情况1:物理内存已无过多空闲内存,则借用不到内存,造成java程序new数据无地方存储
情况2:从物理内存借用到内存,但此时java程序在等待,消耗时间
故 -Xmx和-Xms设置一样
- 堆栈结构图:
- 栈
-XX:PermSize=128m 栈初始化内存 是剩余物理内存的1/64
-XX:MaxPermSize=128 栈最大内存 是剩余物理内存的1/4
总结:-XX:PermSize = -XX:MaxPermSize
理由:-XX:MaxPermSize 默认值是物理内存的1/64,内存值较小,当大并发流量增大,new的数据较多,对象引用值也多,会出现-XX:MaxPermSize内存不够用的情况,此时还需临时向物理内存申请借用,借用时会出现两种情况
情况:
1、物理内存已无过多的空闲内存,则借不到内存,造成java程序对象引用不到地方存储
2、从物理内存借用到内存,但此时java程序在等待,消耗时间 - JVM配置步骤
1、Tomcat若自动启则:
①、jps或netstat -ntlp | grep port 或ps -ef | prep java 》 得到java pid
②、kill -9 pid
2、vim Tomcat/bin/catalina.sh
3、jvm配置
4、tomcat/bin/目录下执行 sh.startup.sh -
待完善