关于tomcat总是内存溢出

有一段时间Tomcat总报内存溢出,以防万一忘记这里做下笔记

-Xms800m -Xmx800m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

或是在Eclipse或是Myeclipse的配置文件\eclipse3.7.1\eclipse.ini中进行修改参数。
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
128M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
128m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m

1.将tomcat/bin目录下的catalina.sh文件加上这两行:
JAVA_OPTS='-server -Xms512m -Xmx512m  -XX:PermSize=32M -XX:MaxNewSize=128m -XX:MaxPermSize=64m -Djava.awt.headless=true'
CATALINA_OPTS="-server -Xms256m -Xmx256m"

设置一下资源大小。
2.如果配了apache的一定要把url转发的转发规则定好,不能全部转发给tomcat去处理。
图片,样式,js等要发给apache去处理:
JkMount /* 不能有,有些apache配置了workers.properties 的就去掉[uri:/*.jsp]worker=ajp13:localhost:8009
context=/
3.Xms : 应用程序初始化内存大写,注意是你的某一个应用程序,多个应用程序将生成多个JVM实例
-Xmx: 应用程序占用内存的最大值,将不能超过这个值,否则可能导致OutOfMemory.
-XX:NewRatio old generation/new generation 的比例
推荐的-Xms -Xmx设置成一样,,为系统内存的80%.这样,不用每次GC清理完再重新分配.而-XX:NewRatio为2
PermSize为固定存储区域,GC不会对其进行回收,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误,静态static对象/方法/属性和类关联的,不被虚拟机JVM回收,太多的话可能造成这个错误。
4.有些tomcat版本本身就有内存泄漏的问题,5.5.4就有,有时候需要换一下tomcat

猜你喜欢

转载自yangtaohong.iteye.com/blog/1994007