码迷,mamicode.com
首页 > 编程语言 > 详细

java.lang.OutOfMemoryError: PermGen space 问题解决办法

时间:2015-03-09 20:54:43      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

    线上java应用报永久代(PermGen)OOM,遇到永久代OOM那就没啥办法了,只能为永久代扩容。

    要做的就是改大PermSize这个参数。那么需要知道之前永久代的容量是多少。但是这个java实例的启动参数里并没有PermSize的定义。那么这个实例一定是用的永久代的默认大小。永久代的默认大小是多少呢?百度了一下,JDK1.6的默认大小是82M。果真如此吗?在这个实例执行 stat -gccapacity pid  ,命令结果如下:

 EXECUTE COMMAND:/export/servers/jdk1.6.0_25/bin/jstat -gccapacity 27478 500 1
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC      PGCMN    
PGCMX     PGC       PC     YGC    FGC 
174720.0 699008.0 174720.0 1792.0 1792.0 171136.0   349568.0  1398144.0   349568.0   349568.0  21248.0  
83968.0  80384.0  80384.0  73933   159

    PGCMX对应的是永久代的最大值,83968KB换算成MB正好是82M。这太小了,果断在启动参数上添加一个参数:

    -XX:MaxPermSize=256m

    为了方便对以后的堆内存OOM对内存分析,再加两个参数:

    -XX:+HeapDumpOnOutOfMemoryError 
    -XX:HeapDumpPath=/export/Logs/im.**.com/

java.lang.OutOfMemoryError: PermGen space 问题解决办法

标签:

原文地址:http://blog.csdn.net/bruce128/article/details/44159469

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!