`
小蛋蛋
  • 浏览: 80622 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java.lang.outofmemoryerror permgen space

阅读更多
两个方法

1/设置tomcat6w.exe

在Java Options添加:
-XX:PermSize=256m
-XX:MaxPermSize=512m

2/在环境变量里面配置:

环境变量:-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m

环境变量名:JAVA_OPTS

注:非安装版设置如下:

修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=512m

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果APP会LOAD很多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候,超过了jvm默认的大小(4M)那么就会产生此错误信息了

建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。具体内存占用可自行按计算机内存设置。
分享到:
评论
2 楼 小蛋蛋 2008-11-23  
sdh5724 写道

-XX:PermSize=256m
-XX:MaxPermSize=512m


虽然你这么做没有错, 但是, 过于粗糙了点啊, 一般来说, 这个数字需要在你的应用一定长时间观察后获得一个合适的值的. 你这样一下就要吃掉256M内存, 也太慷慨了. 具体要用多少, 你可以使用 jmap 这个工具观察下. 很简单的.  我们的应用比较庞大, 几百万行代码, 也就吃了100m的样子的PERMSIZE. 对于不同的32/64系统, 这个值需要的大小是不一样的, 64位下, 消耗需要大一点点.

嗯,谢谢你的建议,当时是自己的Eclipse出了这个问题,所以就从网上找到了这些,也是一直没有好好理解,我会好好看看的。谢谢
1 楼 sdh5724 2008-11-22  
-XX:PermSize=256m
-XX:MaxPermSize=512m


虽然你这么做没有错, 但是, 过于粗糙了点啊, 一般来说, 这个数字需要在你的应用一定长时间观察后获得一个合适的值的. 你这样一下就要吃掉256M内存, 也太慷慨了. 具体要用多少, 你可以使用 jmap 这个工具观察下. 很简单的.  我们的应用比较庞大, 几百万行代码, 也就吃了100m的样子的PERMSIZE. 对于不同的32/64系统, 这个值需要的大小是不一样的, 64位下, 消耗需要大一点点.

相关推荐

Global site tag (gtag.js) - Google Analytics