有一段时间Tomcat总报内存溢出,以防万一忘记这里做下笔记
1.将tomcat/bin目录下的catalina.sh文件加上这两行:
class="java" name="code">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