标签:
解决
OutOfMemoryError: PermGen space
,过程是痛苦的,结果是舒畅的
最近自己的程序在
Redeploy
重新部署的时候,老提示
OutOfMemoryError: PermGen
space
错误,在网络上搜索了相关的资料,但是按照做后还是存在这个问题。由
于我是第一次碰到这个问题,
花费了我
2
天时间,
过程比较痛苦,
结果还是比较
圆满的。我将我的经历写下来,供我自己以后参考,也提供给大家分享。
在网络上关于
OutOfMemoryError:
PermGen
的解决办法很多了,但是有
的办法都是互相转发,真假难辨。有的可能还产生误导。
我的环境是
Myeclips
8.5
、
tomcat6.x
,
试过了很多办法后,
比如:
文档
《
Linux
和
Windows
修改
Java
虚拟机内存大小》
(
http://duanfei.iteye.com/blog/1189541
)
中的办法,
我都试过了,
还是不
行;
当然还参考了很多其他资料,
然后进一步研究
JVM
的优化等,
我就是想知道
我配置的内存参数应该够大了,
为什么还是溢出,
难道没有生效,
那我就需要找
到配置后系统认可的内存参数是多少,
参考网络上的知识,
启动了
JDK
自带的工
具,
在
\jdk1.6.0_10\bin
下面的
jconsole.exe
内存监控的工具,
点击进入如下:
选择
PID
为
4472
的这个进程,
点击
,进入如下界面,
选择内存页,并且选择图表中最后一个选项的“内存池“
Perm Gen
”
,下面的详细信息显示
的是:
这个地方的最大值是
65536Kb
,也就是
64M,
我于是就找到原因了,
64M
肯定会导致溢出,
但是我配置了几百兆的内存空间就是不生效呢。
注意,
这个是我在
myclipse
中启动的
tomcat
看到的结果。
接下来,我进入
bin/catalina.bat
文件中的“
rem ----- Execute The Requested Command -
”这
个后面增加了下面的语句
set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1024m
-XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=512m
,这个地方注意增加的位
置是在
rem ----- Execute The Requested Command
–
后面,最好
set JAVA_OPTS=%JAVA_OPTS%
这个也要加上,
这个网络上好多文档没有将这个位置交代清楚,
或者说的不是这个地方,
是
不是其他地方也可以,我没有试。我手工启动
,在
cmd
状态下输入:
startup
,然后
看
,明细
的内存就是我配置的内存
521M
,是生效了的
.
但是我在
中启动
后,重新部署程序,错误依旧。原来文档
)中提到
如果是通过
Myeclipse
启动
Tomcat
配置选项
打开选项
..
输入
关键字
,
然后点开
Server
就会出现配
置区域
Optional Java VM arguments.
直接加入
-Xms128m -Xmx512m
这个地方是有一个漏洞的,
“
应该是
-Xms256m -Xmx512m
-XX:PermSize=256m -XX:MaxPermSize=512m
,这个是对
生效的。如果没有
,那么
的内存始终是
。修改后,重
启
,重新部署,内存不再溢出了。
我的机器上是:
Servers/Tomcat/Tomcat 6.x/JDK
中的
Optional Java VM arguments
:
。找到了原因,解决也就自然很简单了。
注意这个地方
Servers/Tomcat/Tomcat 6.x
这个地方还有一个参数:
Optional program
arguments
,这个感觉作用不大,我也是修改后没有什么效果,我以为修改这个地方就可以
了,导致我走了弯路。
OutOfMemoryError PermGen space 的解决办法(头痛了几天)
原文地址:http://blog.csdn.net/tfy1332/article/details/44828877