关于JVM疑问,请看看问题描述

现场有一台win 2008 server服务器,上面部署了一个tomcat。
最近在对这个tomcat做JVM优化,因为发现当年老代达到100%后,整个tomcat就夯死,页面无法访问了,这是个大问题,需要解决下。。

机器的配置为:8核cpu,64G内存,64位的操作系统

修改后的JVM参数配置为:

set JAVA_OPTS=-Xms4g -Xmx20g  -XX:PermSize=4g -XX:MaxPermSize=20g -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC -XX:NewRatio=4 -
XX:CMSInitiatingOccupancyFraction=80

想问问大家合理不,如果不合理的话,有哪些还可以继续改进??

阅读 3.7k
3 个回答

具体我这里不敢说,但是我觉得XX:MaxPermSize的最大值应该是物理内存的1/4,那么你设置20G不会有问题?

-XX:+UseParallelOldGC

你这里年老代采用并行垃圾收集,那么这个参数是-XX:CMSInitiatingOccupancyFraction=80不管用的,只有当你用CMS收集器的时候才会生效。
另外不知道你的应用程序是否需要关心gc的stop the world的时间,如果care的话可以采用CMS收集器。

新手上路,请多包涵

-Xms20g
-Xmx20g 服务器建议xmx与xms设置成一样大
-XX:PermSize=4g
-XX:MaxPermSize=20g 我没见过永久代可以用到这么大,一般128m够用了,再不行256m(注:JDK1.8后去除了,加入了MetaspaceSize)
-XX:+UseParallelGC
-XX:ParallelGCThreads=20
-XX:+UseParallelOldGC 这么大内存不建议用并行算法,会造成年代代回收STW时间过长,一般超过3GB堆建议使用CMS回收器,大内存像你使用20GB,换成JDK1.8用G1回收器吧
-XX:NewRatio=4
XX:CMSInitiatingOccupancyFraction=80 这个在CMS回收器才有用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进