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