【Java-JVM】定量分析解决OutOfMemoryError: PermGen space, 来看科学量化分析
网络上搜集,有操作有分析。
一、问题
在部署大型的 Java Web项目的时候,或者在 MyEclipse 中进行调试的时候经常出现:
OutOfMemoryError: PermGen space
的错误。
二、监控运行时参数
我们经常是在尝试网上的各种方案之后,并且将各种参数手动调整来调整去,都没有作用,依然溢出。此时就需要找到配置后系统认可的内存参数是多少。参考网络上的知识,启动了JDK自带的工具,在\jdk1.6.0_10\bin下面的jconsole.exe内存监控的工具,点击选择PID为4472的这个进程(带有tomcat的进程)。
选择内存页,点击右下角的绿色柱子里的最后一个“内存池“Perm Gen”,相应的左边会显示它的详细信息。
【本博客的截图是修复后的参数大小】
三、设置步骤
1. 正确步骤分为2种情况。
1.1 使用MyEclipse和Tomcat搭配进行本地调试
使用MyEclipse调试程序的话,则需要在该软件内进行JDK参数设置。
设置步骤如下图:参数也可参考。JDK版本和Tomcat选择自己调试时用到的那个。
1.2 只使用Tomcat作为生产环境
只使用Tomcat,那肯定就只有在 Tomcat 的配置文件中进行设置了。
设置文件: (你的Tomcat安装路径)/bin/catalina.bat
修改位置:【rem ----- Execute The Requested Command - 】这行后面增加下面:
set JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=512m
最好set JAVA_OPTS=%JAVA_OPTS% 这个也要加上。
然后手工启动tomcat,然后看jconsole.exe,查看Perm Gen的内存可以看出配置是否生效。