针对java程序java.lang.OutOfMemoryError: PermGen space的解决方案
1. 对于Tomcat程序:
一般来说,tomcat程序默认的最大内存占用为128M. 此设置可以通过以下方式查看,查看文件/etc/init.d/tomcat6中的JAVA_OPTS配置.
但是以默认的128M的配置,往往是不够的。当看到有提示“java.lang.OutOfMemoryError: PermGen space”,此时就要修改tomcat程序所占用的内存了。
该如何修改呢?
以tomcat6为例,
vim /etc/default/tomcat6,在其中添加一行:JAVA_OPTS="-server -Xms256m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=1024m",然后重启tomcat,即可。
修改完成之后,如何确定此配置是否已经生效了呢?
通过命令:ps axu|grep tomcat,假如在启动的进程中看到如下信息,就说明修改已经成功:
tomcat6 18000 1.7 28.7 2573764 596028 ? Sl 17:57 3:19 /usr/lib/jvm/java-6-sun/bin/java -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties -server -Xms256m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=1024m -Djava.security.auth.login.config=/usr/share/tomcat6/conf/jaas.conf -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -classpath /usr/share/tomcat6/bin/bootstrap.jar -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.io.tmpdir=/tmp/tomcat6-tomcat6-tmp org.apache.catalina.startup.Bootstrap start
2. jetty:
修改文件 vim /etc/init.d/jetty:JAVA_OPTS="-server -Xms256m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=1024m",即可。