永久空间内存不足 java.lang.OutOfMemoryError: PermGen space
关键字: tomcat永久空间内存不足 java.lang.OutOfMemoryError: PermGen space,相比不少使用spring,hibernate等一堆jar包的人都遇到过这个问题,在tomcat reload一个Context多次后,tomcat就挂掉了。
http://www.wujianrong.com/archives/2006/12/javalangoutofmemoryerror_permg.html
PermGen space这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。
我在做TMS的发布工具的时候,就遇到了问题,这个工具的目的是把一个相同的系统,在tomcat下自动的发布多份,但当卸载,重新发布多次后, tomcat就挂了,整个电脑如同死机一般。后来使用文章里的set JAVA_OPTS=-server -Xms800m -Xmx800m -XX:PermSize=64M-XX:MaxNewSize=256m-XX:MaxPermSize=128m -Djava.awt.headless=true 解决了问题,不过在2G的电脑上,我是把-XX:MaxPermSize=128m 调到了-XX:MaxPermSize=256m。另外我还尝试了把所有的lib都放到tomcat的lib下,一些lib就不能在本项目中再出现了。
现在看,还是spring,hibernate之类的产生的类导致PermGen space空间不足造成的这些问题。
http://www.javaeye.com/topic/80620?page=1 这个帖子里讨论了这个问题,有人做了些有益的分析可以看看。
我又继续在我的笔记本上做了测试T42,1G内存。tomcat版本6.0.14。
set JAVA_OPTS=-server -Xms256m -Xmx256m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true
这个配置反复发布是可以的,另外又一次测试了将项目下的jar包放到tomcat的lib下的对比。重新安装一个lib下为空的程序是10秒,否则是30秒。
评论
1、修改tomcat的启动参数,类似如下的样子
set JAVA_OPTS=-server -Xms256m -Xmx256m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=256m
2、将通用的lib文件放到tomcat的目录下
发表评论
- 浏览: 1459 次
- 性别:

- 来自: 南京

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
我们做的数据库管理和代码 ...
如果用Excel来定义界面的话,楼主的代码生成功能就强大了
-- by leemingjun -
这种JavaEE培训是否有价值 ...
我的QQ是412792674 gmail邮箱的账号是ynstudio,欢迎培训 ...
-- by ynstudio -
永久空间内存不足 java.la ...
连说带评写的不清晰,总结一下 1、修改tomcat的启动参数,类似如下的样子 ...
-- by ynstudio -
永久空间内存不足 java.la ...
基本上是通过 共用lib提取的方法 结合配置修改 来解决问题。不过的确比较麻烦!
-- by jianfeng008cn -
我们做的数据库管理和代码 ...
如果有代码共享一下就太好了.. 关键是思路,代码是商业的,种种原因现在不方便给 ...
-- by ynstudio






评论排行榜