虚拟机内存溢出java.lang.OutOfMemoryError: PermGen space

12人阅读 评论(0) 收藏 举报
分类:

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的时候。
异常情况
1如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
2这个异常和JVM默认划分的内存上限是128M有关,如果你的业务足够繁忙,128M是远远不够的,所以你可以给JVM分配上1G甚至更多,这样就可以避免内存溢出。
解决方法:

手动设置MaxPermSize大小修改
TOMCAT_HOME/bin/catalina.sh
在“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:
JAVA_OPTS=”-server -XX:PermSize=64M -XX:MaxPermSize=128m

if [ $have_tty -eq 1 ]; then
 JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m"
  echo "Using CATALINA_BASE:   $CATALINA_BASE"
  echo "Using CATALINA_HOME:   $CATALINA_HOME"
  echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"

-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域

内存设置资料

一般的ini文件设置主要包括以下几项:
-vmargs
-Xms40m
-Xmx256m
-XX:PermSize=64M
-XX:MaxPermSize=128M
以下解释其意思。
-vmargs:说明后面是VM的参数
-Xms40m:虚拟机占用系统的最小内存
-Xmx256m:虚拟机占用系统的最大内存
-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,
                       堆空间剩余小于5%就会警告,建议把这个稍微设
                               大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大堆大小。这个也适当大些
     所以若出现问题,首先请调整 -Xms40m:将其设置的小一些,就ok了,

1g内存推荐设置为:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=256M
-XX:MaxPermSize=512M
其中-XX:PermSize=64M可以设置大一些,但不能超过MaxPermSize
-Xmx512M5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M
查看评论

虚拟机的使用

对学习IT系统集成课程放的初学者,了解和掌握虚拟机知识是最基本的技能,本课程是韩老师虚拟机的熟练使用是必不可少的技能,为你详细介绍了虚拟化为我们带来的学习上的方便。
  • 2017年02月26日 13:13

java.lang.OutOfMemoryError: PermGen space错误jdk内存溢出配置

使用myeclipse10和tomcat7运行Java Web项目时,报出了java.lang.OutOfMemoryError: PermGen space错误。经过尝试,以下方法解决了我的问题。 ...
  • loowooowool
  • loowooowool
  • 2017-01-08 15:54:33
  • 783

resin内存溢出 java.lang.OutOfMemoryError: PermGen space

Resin,内存溢出 最近由于resin主机经常报如下错误:500 Servlet Exceptionjava.lang.OutOfMemoryError: PermGen space一旦报这个错,网...
  • twosecond
  • twosecond
  • 2009-05-15 16:24:00
  • 5334

MyEclipse运行项目的内存溢出问题解决方案:Java.lang.OutOfMemoryError: PermGen space

1、修改myeclipse.ini        在Myeclipse安装目录下G:\MyEclipse8.5\Genuitec\MyEclipse 8.5有一个myeclipse.ini配置文件,...
  • Crazy_Java1234
  • Crazy_Java1234
  • 2016-06-08 15:25:23
  • 3838

jetty插件java.lang.OutOfMemoryError: PermGen space内存溢出

项目运行时,有时遇到java.lang.OutOfMemoryError: PermGen space问题。 例如启动线程异步导入excel、excel导出时,会出现如上问题。 原因分析: Pe...
  • a544879146
  • a544879146
  • 2017-05-03 10:13:36
  • 1258

tomcat内存溢出解决办法,错误信息:java.lang.OutOfMemoryError:PermGen space

  • 2015年10月26日 17:43
  • 816B
  • 下载

weblogic 内存溢出解决 java.lang.OutOfMemoryError: PermGen space

Exception in thread “[STANDBY] ExecuteThread: ‘4’ for queue: ‘weblogic.kernel.Default (self-tuning)’...
  • zhq426
  • zhq426
  • 2015-09-19 16:30:52
  • 9685

Eclipse中通过Tomcat运行JavaWeb项目发生内存溢出:java.lang.OutOfMemoryError: PermGen space 错误的解决方案

运行JavaWeb项目的时候抛出异常: Exception in thread “main” java.lang.OutOfMemoryError: PermGen space at java.la...
  • Crazy_Java1234
  • Crazy_Java1234
  • 2016-06-01 11:13:23
  • 9998

tomcat内存溢出解决,java.lang.OutOfMemoryError: PermGen space

今天遇到了一个java.lang.OutOfMemoryError: PermGen space异常问题,一直解决不了,根据网上修改了tomcat的配置文件,但是还是解决不了,最后是通过如下方式解决的...
  • u013142781
  • u013142781
  • 2016-03-02 15:44:12
  • 3187

出现 java.lang.OutOfMemoryError: PermGen space 错误的原因及解决方法

1 异常描述在正常启动 Tomcat 的时候,报出如下错误:2 异常原因通过观察上面的错误描述,咱们可以知道错误原因: java.lang.OutOfMemoryError: PermGen spa...
  • qq_35246620
  • qq_35246620
  • 2017-04-07 15:55:41
  • 1541
    activiti
    activiti学习
    个人资料
    持之以恒
    等级:
    访问量: 20万+
    积分: 6713
    排名: 4402
    博客专栏
    最新评论