我在catalina.sh中设置CATALINA_OPTS,但很奇怪,这个值似乎被忽略。我在一台拥有768M RAM的机器上。以下是重现步骤Tomcat 7 - 无法获取CATALINA_OPTS堆大小工作
我在启动Tomcat之前通过运行free -m
来检查内存。我得到以下
total used free shared buffers cached
768 43 724 0 0 16
我已经设置了CATALINA_OPTS在catalina.sh的第一线,像这样:
export CATALINA_OPTS="-Xms64M -Xmx256M"
我然后使用启动Tomcat ./startup.sh
我检查Tomcat的花参数做了ps aux | grep tomcat
。我得到以下的结果,这似乎表明,设置读取
根1164 26.0 6.2 1232968 49116点/ 0 S1中10:30 0:01 在/ usr/bin中/ JAVA -Djava.util.logging .config.file =/usr/share/apache-tomcat-7.0.39/conf/logging.properties -Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager -Xms64M -Xmx256M -Djava.endorsed .dirs =/usr/share/apache-tomcat-7.0.39/endorsed -classpath /usr/share/apache-tomcat-7.0.39/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.39 /bin/tomcat-juli.jar -Dcatalina.base =/usr/share/apache-tomcat-7.0.39 -Dcatalina.home =/usr/share/apache-tomcat-7.0.39 -Djava.io.tmpdir = /usr/share/apache-tomcat-7.0。 39/TEMP org.apache.catalina.startup.Bootstrap开始
我再次运行free -m
,但我得到
total used free shared buffers cached
768 558 209 0 0 20
这表明,使用512MB。 我不知道我在做什么错。我也尝试设置JAVA_OPTS,但那也不起作用。
我在CentOS 6 JDK7和Apache Tomcat 7.
EDIT 1:下面是如果我分别
total used free shared buffers cached
768 432 335 0 0 39
和
设置-Xmx值128和64的结果 total used free shared buffers cached
768 366 401 0 0 32
看起来像-Xms设置根本没有任何作用,并且使用-Xmx设置的值大约超过250MB。
这很难解释。这是一个普通的香草Tomcat 7安装,没有安装webapps(默认的除外)。当然,他们不需要250 MB,是吗?
嗨,感谢您的回答。我怎样才能找到250MB的内容。我虽然Tomcat是一个精简的容器,但250 MB的未使用数量太多了。 – arahant
使用jconsole,与jdk一起交付的工具,以连接到您的流程。这至少会对分配的资源进行一些概述。它不会在逐字节级别上工作,但会给您更多关于可能已分配内存的印象。另外,请记住,Java进程提供诸如热点编译器之类的东西,通常针对长时间运行的进程中的性能进行了优化,而不是最小的内存占用量。您可能会停用几个jvm功能来交易内存,但首先购买更多内存会更便宜。 –
PermGen空间大约150MB。减少到一半 – arahant