近日在项目开发时,Tomcat部署了四个项目,可以正常启动,但是在进行测试时,Tomcat发生挂起,并抛出永久区内存溢出,:
nested exception is java.lang.OutOfMemoryError: PermGen space
原来是加载太多jar包和文件,分配Tomcat内存不够了。先解决如下,介绍三种方法:
第一种,直接在eclipse中修改:
run-》run configuration-》vm argument
在后面加上这句配置:栈空间256mb,堆空间512mb,永久区512mb
-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=512m
第二种:如果所用Tomcat中
Tomcat \ bin 目录中有Catalina.bat文件,
进入到Tomcat安装文件目录下:tomcat\bin下,修改Catalina.bat,更改内存分配
在“rem ----- Execute The Requested Command ----------------------”下加入
JAVA_OPTS="-server -Xms800m -Xmx800m -XXNewSize=256M -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m"。
注:这种方法在只使用tomcat时管用,但使用eclipse时不管用。
第三种:修改eclipse下的eclipse.ini文件
这个相对来说比较好操作,收到对应的MaxPerSize参数,根据需要,设置内存大小。
在eclipse.ini中加入如下代码:
加入
-vm
d:/jdk6/bin/javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XX:PermSize=256M
-XX:MaxPermSize=512m
如下图