63

我有这个带有 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 .. 还是我看错了..?有人可以启发我吗?丁:

4

4 回答 4

76

您必须更改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"

视窗:

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

set CATALINA_OPTS=-server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m
于 2012-07-05T09:46:05.120 回答
21

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

于 2013-09-15T02:04:43.540 回答
1

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

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

如何确保 Tomcat6 在 Windows 上读取 CATALINA_OPTS?

于 2012-07-05T09:45:05.647 回答
-1

从 java 8 中完全删除 +
从 java 7 中部分删除(例如,interned Strings)

于 2018-02-23T15:38:40.353 回答