2012-07-05 47 views
60

我有这个VM与tomcat,java和grails在里面。我已经得到PermGen的错误,所以我环顾四周,找到了解决办法:如何正确设置烫发大小?

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

我使用SSH访问虚拟机,并输入上面的参数。我想这会解决这个问题。事情是,我想确保我做得正确。所以我再次搜查我怎么能检查当前permSize,这是我得到了解决:

jinfo -flag MaxPermSize 6444 

6444是PID,并作为响应,我得到了这一点。

-XX:MaxPermSize=85983232 

问题:maxPermSize的值是以字节为单位吗?因为如果是这样,那就意味着java_opts命令不起作用。我期望得到512米,但85983232字节= 82 MB ..或者我看到它错了..?任何人都可以启发我吗? D:

+0

完全除去我想你重新启动Tomcat进程?使用ps -wwf 6444,您可以看到启动该过程的完整命令。检查是否包含您的选项。您也可以启动jconsole(包含在jdk中)并连接到该进程,然后检查常规信息选项卡和内存选项卡。 – greyfairer 2012-07-05 09:42:05

+0

我没有重新启动tomcat。我想我忘记了这个过程.. D:对不起,我对这个部署的东西有点新。但是我想作为一个开发者,我应该知道这种东西。谢谢。 :) – 2012-07-05 14:55:40

回答

74

你必须改变在CATALINA_OPTS在Tomcat卡塔利娜定义选项启动文件中的值。要增加PermGen存储器,请更改MaxPermSize变量的值,否则请更改Xmx变量的值。

Linux & Mac操作系统:打开或创建setenv.sh文件放置在“bin”目录中。你必须将更改应用于此行:

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

的Windows:

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

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

实际上,建议这样做的方法是创建一个setenv.bat(Windows)或setenv。sh(* nix)并将条目放在那里,Tomcat会选择这些,并且更容易管理升级 – Steve 2012-07-05 22:37:12

+0

有很多与此相似的答案,但我发现这是最清晰和最简单的措词,非常有帮助。 – Jeremy 2016-01-21 09:28:47

+1

为什么要改变Xmx增加PermGen? – amdev 2016-10-17 13:17:34

1

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

也许此帖可帮助你!

How to make sure that Tomcat6 reads CATALINA_OPTS on Windows?

+0

我正在使用Linux。但我会读这个,看看它是如何工作的。非常感谢你的回复。 :3 – 2012-07-05 14:53:43

21

不要把catalina.bat/catalina.sh中的环境配置。相反,您应该在CATALINA_BASE \ bin \ setenv.bat中创建一个新文件,以使您的定制独立于tomcat安装。

+0

我提交了一个编辑,将其添加到接受的答案中。 – 2015-03-26 18:37:54

0

从Java 8 +
从Java 7部分地去除(实习字符串例如)
source