我在 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