PermGen space错误解决方法

2018年9月15日16:37:35 发表评论 908

PermGen space错误解决方法

在Java程序运行的过程中经常会遇到内存溢出的情况,一般来说分为2大类:

  • 第一种是分配给应用的JVM内存不足,在运行中大量需要内存的时候,程序无法及时得到充足的内存分配时就会报错;
  • 另一种则是程序中存在内存泄漏的代码,程序员没有排查修复的,使得内存被不断消耗直至报错。以下报错异常信息经常会出现在Tomcat应用中:

  • 关键字PermGen space

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

  • 解决办法

手动设置MaxPermSize大小:

  • 如果是linux系统,修改TOMCAT_HOME/bin/catalina.sh;
  • 如果是windows系统,修改TOMCAT_HOME/bin/catalina.bat。

echo "Using CATALINA_BASE: $CATALINA_BASE" 上面加入以下行:

提示:以上参数涉及内存大小的具体参数根据自己机器情况而定。

建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

  • Eclipse优化

针对Eclipse集成Tomcat的时候,可以考虑增加以下参数,修改eclipse.ini文件,修改如下:

  • 结语

程序员在开发过程中首先要保证程序的健壮,认真排查可能存在的内存泄漏代码,及时修复BUG,再者在服务器允许的情况下,合理调整程序运行所需的内存空间(并非越大越好),二者兼顾下来保证服务的高可靠性。

weinxin
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。
连线北海

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: