一个菜鸟,想要配置JVM的内存调优,百度一下,发现了很多帖子,列举几个:
1.http://www.jdon.com/idea/tomcat-tuning-in-practice.html
2.http://blog.csdn.net/ldx891113/article/details/51735171
但是发现,按照他们的配置在catalina.bat中,加了对应的JAVA_OPTS 或者CATALINA_OPTS没起效果,
例如:
rem 1GB heap 配置案例
set JAVA_OPTS="-verbose:gc -XX:+PrintGCTimeStamps -Xms1024m
-Xmx1024m -XX:NewSize=341m -XX:MaxNewSize=341m -XX:SurvivorRatio=2
-XX:PermSize=128m -XX:MaxPermSize=128m -XX:ThreadStackSize=512"
rem 2GB heap 配置案例
CATALINA_OPTS=" -verbose:gc -XX:+PrintGCTimeStamps -Xms2048m -Xmx2048m
-XX:NewSize=682m -XX:MaxNewSize=682m -XX:SurvivorRatio=2
-XX:PermSize=128m -XX:MaxPermSize=128m -XX:ThreadStackSize=512"
rem 4GB heap 配置案例
CATALINA_OPTS=" -verbose:gc -XX:+PrintGCTimeStamps -Xms4096m -Xmx4096m
-XX:NewSize=1364m -XX:MaxNewSize=1364m -XX:SurvivorRatio=2
-XX:PermSize=128m -XX:MaxPermSize=128m -XX:ThreadStackSize=512"
查阅相关信息(其实就是百度,百度,百度),始终没有效果;
无意间去掉了配置的 “” 号
rem 1GB heap 配置案例
set JAVA_OPTS=-verbose:gc -XX:+PrintGCTimeStamps -Xms1024m
-Xmx1024m -XX:NewSize=341m -XX:MaxNewSize=341m -XX:SurvivorRatio=2
-XX:PermSize=128m -XX:MaxPermSize=128m -XX:ThreadStackSize=512
rem 2GB heap 配置案例
CATALINA_OPTS=-verbose:gc -XX:+PrintGCTimeStamps -Xms2048m -Xmx2048m
-XX:NewSize=682m -XX:MaxNewSize=682m -XX:SurvivorRatio=2
-XX:PermSize=128m -XX:MaxPermSize=128m -XX:ThreadStackSize=512
rem 4GB heap 配置案例
CATALINA_OPTS=-verbose:gc -XX:+PrintGCTimeStamps -Xms4096m -Xmx4096m
-XX:NewSize=1364m -XX:MaxNewSize=1364m -XX:SurvivorRatio=2
-XX:PermSize=128m -XX:MaxPermSize=128m -XX:ThreadStackSize=512
有效果了。
另外也学到了一点点
rem Do not set the variables in this script. Instead put them into a script
rem setenv.bat in CATALINA_BASE/bin to keep your customizations separate.
大致意思就是,如果你需要修改catalina.bat 中的相关配置,不要在catalina.bat中修改,你可以在同级目录
下新建一个setenv.bat文件,把需要的配置写到这个文件中。
这就是一个菜鸟 菜的抠脚的故事。
=====================分割线====================
由于业务需要,又进行了几天的JVM调优,总结一下,
1.JVM配置参数列表,及分析参见:
http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
2.JVM的内存溢出并不是在内存 Old Gen 满了才会出现,具体要以实际业务为准;
后续会继续观察,跟进,更新。
初步设置比较好的配置
-Xmx3000M
-Xms3000M
-Xmn600M
-XX:PermSize=500M
-XX:MaxPermSize=500M
-Xss256K
-XX:+DisableExplicitGC
-XX:SurvivorRatio=1
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
-XX:+CMSClassUnloadingEnabled
-XX:LargePageSizeInBytes=128M
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
-XX:SoftRefLRUPolicyMSPerMB=0
-XX:+PrintClassHistogram
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-Xloggc:log/gc.log