【问题标题】:How do I properly set the permgen size?如何正确设置 permgen 大小?
【发布时间】:2018-12-28 09:26:31
【问题描述】:

我有这个带有 tomcat、java 和 grails 的 VM。我一直收到 permgen 错误,所以我环顾四周并找到了解决方案:

set JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"

我使用 SSH 访问 vm 并输入上面的参数。我想这会解决问题。问题是,我想确保我做得正确。所以我再次搜索了如何检查当前的 permSize,这就是我得到的解决方案:

jinfo -flag MaxPermSize 6444

6444 是 pid,作为响应,我得到了这个。

-XX:MaxPermSize=85983232

问题:maxPermSize 的值是否以字节为单位?因为,如果是,那将意味着 java_opts 命令不起作用。我期望得到 512m 但 85983232 字节 = 82 mb .. 还是我看错了..?有人可以启发我吗? D:

【问题讨论】:

  • 我假设您重新启动了 tomcat 进程?使用 ps -wwf 6444 您可以看到启动该过程的完整命令。检查您的选项是否包括在内。您也可以启动 jconsole(包含在 jdk 中)并连接到进程,然后检查 General info 选项卡和 Memory 选项卡。
  • 我没有重启过tomcat。我想我忘记了那个过程.. D:对不起,我对这个部署的东西有点陌生.. 但我想作为一名开发人员,我应该知道这种东西.. 谢谢。 :)

标签: java tomcat grails jvm permgen


【解决方案1】:

您必须更改 Tomcat Catalina 启动文件中定义的 CATALINA_OPTS 选项中的值。要增加PermGen 内存,请更改MaxPermSize 变量的值,否则更改Xmx 变量的值。

Linux & Mac OS:打开或创建setenv.sh 文件放在“bin”目录中。您必须将更改应用到此行:

export CATALINA_OPTS="$CATALINA_OPTS -server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"

Windows:

打开或创建放在“bin”目录下的setenv.bat文件:

set CATALINA_OPTS=-server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m

【讨论】:

  • 实际上建议的设置方法是创建一个 setenv.bat (Windows) 或 setenv.sh (*nix) 并将条目放在那里,Tomcat 会选择这些并且更易于管理升级
  • 周围有很多类似的答案,但我发现这是最清晰和最简单的措辞,非常有帮助。
  • 为什么要改变 Xmx 增加 PermGen ?
【解决方案2】:

不要把环境配置放在catalina.bat/catalina.sh中。相反,您应该在 CATALINA_BASE\bin\setenv.bat 中创建一个新文件,以将您的自定义设置与 tomcat 安装分开。

【讨论】:

  • 我提交了一个编辑以将其添加到接受的答案中。
【解决方案3】:

因此,关于“-XX:MaxPermSize=512m”,您正在做正确的事情:它确实是正确的语法。您可以尝试将这些选项直接设置为 Catalyna 服务器文件,以便在服务器启动时使用它们。

也许这篇文章会对你有所帮助!

How to make sure that Tomcat6 reads CATALINA_OPTS on Windows?

【讨论】:

  • 我正在使用 linux。但我会读这个,看看它是如何工作的。非常感谢您的回复。 :3
【解决方案4】:

从 java 8 + 中完全删除
从 java 7 中部分删除(例如实习字符串)
source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2013-08-18
    • 1970-01-01
    相关资源
    最近更新 更多