JVM参数配置和内存查看
一、参数配置的方式
示例tomcat版本为:apache-tomcat-7.0.69
1. catalina.bat
更改%CATALINA_HOME%/bin下的catalina.bat(catalina.sh)文件,在开头加入一行:
set JAVA_OPTS=%JAVA_OPTS% -server -Xms1024M -Xmx1024M -Xmn256M -XX:PermSize=256M -XX:MaxPermSize=256M -Xss256K |
对配置文件有侵入,不建议使用这种方式。
2. setenv.bat
在%CATALINA_HOME%/bin下增加setenv.bat(setenv.sh)文件,文件内容填写:
set JAVA_OPTS=%JAVA_OPTS% -server -Xms1024M -Xmx1024M -Xmn256M -XX:PermSize=256M -XX:MaxPermSize=256M -Xss256K set JAVA_OPTS=%JAVA_OPTS% -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC |
配置文件Readme中建议的方式,推荐使用。如果通过startup.bat(sh)启动tomcat,配置生效;但如果通过tomcat7.exe或者tomcat7w.exe启动tomcat,这里的配置不生效。
3. tomcat7w.exe
更改tomcat7w.exe文件java标签页下的Java Options,加入相应的配置项:
-Xms1024M -Xmx1024M -Xmn256M -XX:PermSize=256M -XX:MaxPermSize=256M -Xss256K -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC |
如果加入了-Xms、-Xmx、-Xss这三个参数,下面的内存池初始值和最大值以及堆栈大小就不要填写,如果没加入这三个参数就在界面上填写对应的参数。最后不要有空行,否则启动参数将多出一个”exit”。
二、检查是否生效
1. jcmd –l
可以看出,PID为10740的进程为jcmd命令本身,PID为20488的进程为另一个正在运行的JVM。
2. jcmd pid VM.flags
可以看出JVM启动时的参数。
3. jinfo –flags pid
4. jvisualvm.exe
选中部分就是JVM的启动参数,建议使用这个方式查看。
三、内存分配和使用情况查看
1. 内存模型
2. jmap –heap pid
可以看出内存的分配情况以及参数之间的关系:
MaxNewSize=EdenSpace+From Space+To Space
NewRatio=OldSize/MaxNewSize=2
SurvivorRatio=MaxNewSize/From Space
一般FromSpace=To Space,但如果不能取整也会有较小的差异
堆的使用情况:
新生代:
EdenSpace+From Space+To Space = 256M
老生代:
Concurrent mark-sweep generation = 768M
我的配置中使用了CMS,所以显示与默认的不一样。
3. Tomcat自带的监控页面
Total memory = CMSOld Gen + ParEden Space + ParSurvivor Space
= 768.00 MB +85.37 MB +85.31 MB =938.68MB
从Used列能看出内存的各个内存区域的使用率。
转载自:https://blog.csdn.net/axbyc1234/article/details/52801916