免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 962 | 回复: 0
打印 上一主题 下一主题

java 内存溢出 OutOfMemoryError: PermGen space [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-21 10:41 |只看该作者 |倒序浏览

今天碰到了这个问题:
javax.servlet.ServletException: PermGen space
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)

查了一下, PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。
改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
把PermGen space开大点就行了
GC(Garbage Collection)应该不会对PermGen space进行清理
所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误
项目是TOMCAT的WEB APP,由于没有在发布的时候对JSP进行pre compile,
所以那个错误是在运行是出现的,相信如果把pre compile加上的话,
在启动APP的时候就会出错了.
这也与我用热部署功能相关, tomcat不重起多次部署, tomcat不会清理前面加载得环境, 仅仅是将context跟改掉为新部署得,所以将越来越多, 导致出现此问题
参考连接:
http://www-128.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/index.html
http://topic.csdn.net/t/20051107/17/4377324.html
http://blog.chinaunix.net/u/22374/showart.php?id=165291


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11765/showart_235503.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP