79

可能重复:
处理“java.lang.OutOfMemoryError: PermGen space”错误

我的开发机器中有 8GB RAM,并且正在尝试运行 Apache Tomcat (7.0.29) 来同时托管Artifactory (2.6.3) 和Jenkins (1.479)。我试图找到 Jenkins 的内存要求,但看起来他们的 wiki 已关闭。

${TOMCAT_HOME}/bin/catalina.sh中,我添加了以下命令:

CATALINA_OPTS="$CATALINA_OPTS -server -Xms1024m -Xmx3052m"

这应该使 Tomcat 的 JVM 大小(基本上)保持在 1 到 3 GB 之间,为我留出足够的空间来存放其他东西,为 Tomcat 提供足够的内存用于 Artifactory/Jenkins,如果我想要的话,甚至可以使用其他内存。

JAVA_OPTS(为了得到同样的结果,我已经尝试了同样的方法)。我保存更改并运行startup.sh。Tomcat 开始启动,然后死于 OOME,抱怨 Tomcat 已用完 PermGen 空间:

Exception in thread "SocketListener(<hex-stuff>.local.)"
java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: PermGen space
Exception in thread "hudson initialization thread" java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: PermGen space

我会在哪里出错?我已经阅读了多篇关于如何做到这一点的文章,并且(相信!)我正在准确地关注它们。关于如何进一步调试的任何想法或想法?提前致谢!

4

1 回答 1

141

尝试设置这个

CATALINA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 
-server -Xms1536m -Xmx1536m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m 
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"

in {$tomcat-folder}\bin\setenv.sh(如有必要,请创建它)。

有关详细信息,请参阅 http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/ 。

于 2012-10-02T10:43:24.693 回答