【问题标题】:Increase permgen space增加永久空间
【发布时间】:2011-03-01 12:54:28
【问题描述】:

我正在使用 tomcat 6.0,当我在索引时(不是在我启动 tomcat 时),我有一个 permgen 空间错误。
我怎样才能增加那个空间??

谢谢

【问题讨论】:

标签: java tomcat tomcat6 permgen


【解决方案1】:

你可以使用:

-XX:MaxPermSize=128m

增加空间。但这通常只会推迟不可避免的事情。

您还可以启用 PermGen 进行垃圾回收

-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

这通常发生在进行大量重新部署时。我很惊讶你使用索引之类的东西。使用 virtualvm 或 jconsole 监控 Perm gen 空间,并在预热索引后检查它是否稳定。

也许您应该考虑改用另一个 JVM,例如 IBM JVM。它没有永久代并且不受此问题的影响。

【讨论】:

  • 谢谢!!但是我必须在哪里写下来??我猜这里有一个文件:tomcat/conf 我错了吗??
  • 对于 tomcat,您可以创建一个环境变量 CATALINA_OPTS,并将这些选项连接起来。启动脚本将在启动 tomcat 之前将这些添加到 Java 命令行。这不能从 tomcat 配置中完成,因为此时已经配置了 JVM。
  • 如果是 FreeBSD,请将选项添加到 /etc/rc.conf 文件中。首先阅读 tomcat 启动脚本以查看它要查找的确切参数。
  • 在 OpenJDK 7 中,CMSPermGenSweepingEnabled 被弃用,取而代之的是 CMSClassUnloadingEnabled
【解决方案2】:

对于 tomcat,您可以使用

来增加 permGem 空间
 -XX:MaxPermSize=128m

为此,您需要在 tomcat/bin 文件夹中创建(如果不存在)名为 setenv.sh 的文件,并在其中包含以下行

   export JAVA_OPTS="-XX:MaxPermSize=128m"

参考:http://wiki.razuna.com/display/ecp/Adjusting+Memory+Settings+for+Tomcat

【讨论】:

  • export JAVA_OPTS="-XX:MaxPermSize=128m" 为我使用 Clojure + lein repl
【解决方案3】:

您也可以通过 IDE 中的 VM 参数来增加它。就我而言,我使用的是在 Eclipse 上运行的 Tomcat v7.0。为此,请双击您的服务器 (Tomcat v7.0)。单击“打开启动配置”链接。转到“参数”选项卡。将 -XX:MaxPermSize=512m 添加到 VM 参数列表中。单击“应用”,然后单击“确定”。重启你的服务器。

【讨论】:

    【解决方案4】:

    如果你发现没有使用内存设置,为了更改内存设置,我使用了\bin文件夹中的tomcat7w或tomcat8w。然后应该会弹出以下内容:

    单击 Java 选项卡并添加 arguments.restart tomcat

    【讨论】:

    • @Jérémie B 我没有足够的声望点来直接添加图像。
    【解决方案5】:

    在类似 Debian 的发行版上,您将其设置为 /etc/default/tomcat[67]

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2012-07-19
      • 2011-10-11
      • 2016-04-18
      相关资源
      最近更新 更多