Tomcat 内存设置

上一篇 / 下一篇  2009-07-12 21:26:12 / 个人分类:全程测试

    这次发布测试JAVA项目确实让我受了不少苦啊。当然也学习了。。呵呵
    这次发布的是个BOSS系统,由4个子系统构成,发布前开发部也没介绍说系统有多大,当然也是自己经验缺乏,没意识到4个子系统一个tomcat下面默认内存肯定是不够的。所以发布时没有修改tomcat默认内存设置,结果出错了:java.lang. OutOfMemoryError: PermGen space。
    自己很菜,只得网上搜索,原来是内存不够。那就设置了,综合了网上众多网友的方法还是不行,因为上面不少是转的,有些又没转全。汗。。。折腾了不少时间,所以写下保存下。
    PermGen space这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。
    既然内存不够那就加了!如果是通过%tomcat_home%\bin中的startup.bat脚本启动,则在环境变量中加上CATALINA_OPTS这个属性。即是编辑%tomcat_home%\bin下的catalina.bat, 在最前面加上set JAVA_OPTS=-Xms1024m -Xmx1024m  -XX:PermSize=128M -XX:MaxNewSize=512m -XX:MaxPermSize=512m ,当然具体设置就要看实际情况了。 其中-Xms是指初始的大小,-Xmx是指最大值,以免多次加载,一般这两个设为同一个值即可。这是针对 windows 系统,如果是linux 即修改catalina.sh。
    另外,如果tomcat是作为系统服务启动的,以上设置则不灵了!因为作为系统服务的话,系统启动时调用的是 %tomcat_home%\bin\tomcat5w.exe,他读取注册表中的值,而不是catalina.bat的设置,因此需要修改注册表:
解决办法:
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\Java\Options
原值为
-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
-Xrs
改为:
-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
-Xrs -Xms300m -Xmx350m
重起tomcat服务,设置生效。 这个是我转摘的,我没试验过,不过看上去应该没问题的。

TAG:

 

评分:0

我来说两句

Open Toolbar