tomcat默認可以使用的內存為128MB,在較大型的應用項目中,這點內存是不夠的,輕微時,會使系統性能急劇下降,嚴重時,將導致系統無法運行,影響系統的穩定性。當內存不夠用時,常見的問題就是報tomcat內存益處錯誤,從兒導致客戶端包500錯誤的,如下當用戶執行一個大數據的應用時,系統會提示出錯:
前臺錯誤為:HTTP Status 500-Dispatch[EAITool] to method listCurTree retrun an exception
(以下省略)
后臺錯誤為:java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start(Native Method)
at org.apache.catalina.loader.WebappLoader.notifyContext(WebappLoader.ja
va:847)
這是由于TOMCAT內存溢出而引發的問題,主要原因是JVM的虛擬內存默認為128M,當超過這個值時就把先前占用的內存釋放,而導致好象TCP/IP丟包的假象,出現HTTP500的錯誤。
(注意,如果單獨運行一個.class文件,想設置jvm內存的話,按如下方法:
-Xms set initial Java heap size
-Xmx set maximum Java heap size
-Xss set java thread stack size
比如:java -Xmx512M HelloWorld.class,讓jvm使用512Mheap內存.
解決方法主要是加大TOMCAT可利用內存,并在程序當中加大內存使用。因此根據應用的需求,有必要調整JVM使用內存的大小?,F在將手工修改tomcat內存的方法及注意事項列出,希望能對新人有所幫助。
tomcat提供了兩種安裝模式,即免安裝(*.zip)和安裝(*.exe)方式。針對不同的安裝方式下修改tomcat內存大小的方法幾注意問題(windows環境):
方式1:當選擇安裝方式時,可以在安裝tomcat的過程進行設置tomcat初始化內存的大小。但是假如說在安裝時沒有選擇,或者應用改變了,需要增加tomcat內存時怎么半呢?此時,我們就要手工修改tomcat的一些文件了:
看了很多網上的資料,都是說修改\bin\catalina.bat文件的內容,即在里面增加一行代碼:
set JAVA_OPTS=-Xms512m -Xmx512m //表示初始化最小可用內存和最大可用內存都是512MB(修改相應值即可)
如在catalina.bat的
rem ----- Execute The Requested Command
echo Using CATALINA_BASE: %CATALINA_BASE%
echo Using CATALINA_HOME: %CATALINA_HOME%
echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%
echo Using JAVA_HOME: %JAVA_HOME%
這一欄改為
rem ----- Execute The Requested Command
set JAVA_OPTS=-Xms512m -Xmx512m
echo Using CATALINA_BASE: %CATALINA_BASE%
echo Using CATALINA_HOME: %CATALINA_HOME%
echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%
echo Using JAVA_HOME: %JAVA_HOME%
就可以將JAVA虛擬機分配內存 508.0625MB的!
但是很多人修改后,發現修改并沒有起作用,即通過windows的服務啟動tomcat時,實際的內存還是默認的,修改的設置并沒有起作用;而通過\bin\startup.bat 啟動卻是生效的。這是為什么呢?因為在安裝過程中,JVM的初始化參數已經寫在注冊表中了,由于沒有修改注冊表中相關參數,所以以windows服務方式啟動時,修改的并沒有生效。而通過\bin\startup.bat 啟動直接是通過\bin\catalina.bat文件中的配置的。你需要重新加載到系統服務中才生效,或者你手工在注冊表中查找修改啟動值,加載到服務中的時候參數已經配置好了,自己修改artup.bat不會改變注冊表中的參數設置。
解決方法:修改注冊表中的參數,加入JVM初始化內存的參數:
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
值為
-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
-Xrs
如加入 -Xms512m -Xmx800m