PermGen space问题之最佳解决方案

来源:互联网 发布:商家收款软件 编辑:程序博客网 时间:2024/06/05 22:57

  这两天在做一个比较重型的项目,在eclipse中运行项目时,总是报PermGen space的错误,查看了网上各种资料,真是过程是痛苦的,但结果是喜悦的,下面就是我的解决方案:

  首先说明一下为什么会出现这个问题呢?简而言之就是你的项目class文件和jar文件太多了,java虚拟机加载这么多必定要撑爆了,所以就要罢工。

  接下来说明一下我的环境,window7+eclipse+tomcat7+jdk1.7,在网上查到的一般解决方案就是在tomcat/bin目录下的catalina.bat(linux下是catalina.sh)文件echo Using CATALINA_BASE:   "%CATALINA_BASE%"的下方,加入 set JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=512m 一条,但是尝试过了,在eclipse重启tomcat,运行项目还是有这种错误。

 接下来,我在网上了解下在jdk的bin目录下有一个jconsole.exe的程序,是专门来检查jvm的运行内存的,这样我感觉我就找到了解决问题之强有力工具了,首先打开jconsole.exe这个监控器,开启类似有catalina字样的进程就是tomcat启动进程(前提是:你在eclipse已经启动了tomcat),看到点击“内存”选项卡,在图表的下拉框选择“内存池perm gen”选项,在“详细信息”的最大值可以看到就是jvm的XX:MaxPermSize=512m值,发现一只还是80M,不是512M,说明我上面设置的参数没有生效,我尝试手动进入tomcat/bin目录启动startup,在看看“详细信息”的最大值变成了512M了,我瞬间明白,手动startup启动会读取catalina.bat文件的参数,但是在eclipse中启动tomcat是不会读取这个参数的,这就是问题的关键所在,最后我就在eclipse属性设置的java-》installed jre下面编辑我的jre,在default vm arguments中加入-XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=512m,告诉虚拟机启动时的参数,最后运行时就完全没问题了,希望对大家有帮助,感谢网络上的帮助,予人玫瑰,手留余香

0 0