擴大內存的方法:
tomcat運行一個大的應用程序,經常報內存不夠的錯誤,比如java heap space outofMemory
SEVERE: Servlet.service() for servlet jsp threw exception java.lang.OutOfMemoryError: Java heap space
對於這種問題,可以修改啟動參數來解決。
- 如果是通過/bin/startup.bat啟動的,那么修改/bin/catalina.bat這個文件,擴大JVM的空間,但是這個修改這個文件只針對使用startup.bat的啟動方式,
- 如果使用windows服務器啟動tomat的方式,這樣的修改是沒有用的,要修改注冊表中的參數才可以。修改方式如下: HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Procrun 2.0/Tomcat_BAO/Parameters/Java,修改JvmMs和JvmMx的值,當前我都將其設定為1024,也就是1個G的容量。具體性能再后面繼續觀察。 之前還真不知道windows服務啟動和startup.bat啟動的區別。 windows服務器啟動是在注冊表中加載參數,startup.bat啟動是在catalina.bat加載參數。
注意點:
JvmMx的值並不能想多大就多大,如果超過一定值以后,就不能啟動tomcat了。比如我將JvmMx設定為2048,表示2G內存,啟動以后報錯如下:
//reporter-stderr.2014-06-11 2014-06-11 14:48:42 Commons Daemon procrun stderr initialized //commons-daemon.2014-06-11 [2014-06-11 14:48:42] [info] [ 2092] Commons Daemon procrun (1.0.15.0 32-bit) started [2014-06-11 14:48:42] [info] [ 2092] Running 'reporter' Service... [2014-06-11 14:48:42] [info] [ 2968] Starting service... [2014-06-11 14:48:42] [error] [ 4052] CreateJavaVM Failed [2014-06-11 14:48:42] [error] [ 2968] Failed to start Java [2014-06-11 14:48:42] [error] [ 2968] ServiceStart returned 4 [2014-06-11 14:48:42] [info] [ 2092] Run service finished. [2014-06-11 14:48:42] [info] [ 2092] Commons Daemon procrun finished
所以我不斷嘗試JvmMx的大小,最后設定為1.5G,當前我服務器的內存是8G

參數調優參考
http://www.oschina.net/translate/tomcat-performance-tuning
參數位置參考
http://bbs.chinaunix.net/thread-3644102-1-1.html
一般加在
rem --------------------------------------------------------------------------- //配置參數內容,不要加載if else里面 rem Guess CATALINA_HOME if not defined
