Tomcat 堆空间设置似乎未应用

Tomcat 堆空间设置似乎未应用

我在 Ubuntu 10.04 中安装了 Tomcat 6,并且想要增加 Java 堆空间,于是我取消/etc/default/tomcat6注释并更改了以下行:

JAVA_OPTS="-Djava.awt.headless=true -Xmx1024m"

但是,当我进入 Tomcat 管理器状态页面时,我看到:

JVM
Free memory: 125.29 MB Total memory: 382.43 MB Max memory: 510.43 MB

因此我去检查我的/etc/init.d/tomcat6脚本并echo $TOMCAT_SH在 之前添加了start-stop-daemon --start,以检查变量是否真正通过,然后我得到了:

# /etc/init.d/tomcat6 start
* Starting Tomcat servlet engine tomcat6
'set -a; JAVA_HOME="/usr/lib/jvm/java-6-openjdk"; source "/etc/default/tomcat6"; CATALINA_HOME="/usr/share/tomcat6"; CATALINA_BASE="/var/lib/tomcat6"; JAVA_OPTS="-Djava.awt.headless=true -Xmx1024m -XX:+UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true"; CATALINA_PID="/var/run/tomcat6.pid"; CATALINA_TMPDIR="/tmp/tomcat6-tmp"; LANG="en_GB"; JSSE_HOME="/usr/lib/jvm/java-6-openjdk/jre/"; cd "/var/lib/tomcat6"; "/usr/share/tomcat6/bin/catalina.sh" start'
...done.

看起来不错,所以我想知道为什么 Tomcat 管理器说我的最大内存只有 510Mb。

我如何确保内存设置已被应用?

答案1

我们常用的是把JAVA_OPTS和CATALINA_OPTS放到/etc/bash.bashrc文件的最后,这样每个用户都可以访问OPTS,tomcat用户也可以访问。

要监控您的更改是否已应用,您可以使用“ps -AfH | grep tomcat”命令,它将显示所有 tomcat 进程包括它们的启动参数。

答案2

我正在 .profile 文件(就在 /home/yourUserName/ 下)中全局设置 Java 选项。

只要您以当前用户身份(而非 sudo)启动所有 Java 进程,它们都将以此参数启动

只需添加

## set Java Options for the JVM
export _JAVA_OPTIONS="-Xmx1024m -Xms512m -XX:MaxPermSize=256m"

到 .profile 文件的末尾,

另一种可能性:将导出放在 tomcat 启动脚本的开头。也应该可以工作。

IE

#!/bin/bash
## set Java Options for the JVM
export _JAVA_OPTIONS="-Xmx1024m -Xms512m -XX:MaxPermSize=256m"

##start Tomcat
/etc/init.d/tomcat6 start

相关内容