為了解決tomcat在大進行大并發請求時,出現內存溢出的問題,請修改tomcat的內存大小,其中分為以下兩種方式:
一、使用 catalina.bat 等命令行方式運行的 tomcat
查看系統最大支持內存命令:java -Xmx1024m -version
1、修改 tomcat\bin\Catalina.bat 文件
windows環境下:
在166行左右
rem Execute Java with the applicable properties ”以下每行
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
在 %DEBUG_OPTS% 后面添加-Xms256m -Xmx512m
linux環境下:
打開在Tomcat的安裝目錄的bin文件的catalina.sh文件,進入編輯狀態.
在注釋后面加上如下腳本:
JAVA_OPTS='-Xms512m -Xmx1024m'
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m"
其中 JAVA_OPTS='-Xms512m -Xmx1024m' 是設置Tomcat使用的內存的大小.
-XX:PermSize=64M -XX:MaxPermSize=256m 指定類空間(用于加載類)的內存大小
保存后,重新以命令行的方式運行 tomcat ,即可,然后通過最后面介紹的如何觀察tomcat現有內存情況的方法進行查看是否已經變更成功。
二、使用 系統中的 “服務”,或者開始菜單的可執行程序運行的tomcat
1、關閉 現在正在運行的tomcat
2.1 [注意]
[高版本tomcat配置方法]
如果是tomcat 5.5 或者是 5.0.28 之后的版本,在 Java 選項卡中,下方,會有
Inital memory Pool:
Maximum memory Pool:
Thread stack size:
三個輸入框,在這里即可不用做上面的操作,直接配置內存大小,只需要設置
Inital memory Pool 為 256
Maximum memory Pool 為 512
點擊確定后,重啟tomcat 生效
如果您是低版本的tomcat,發現沒有上面那幾個錄入框,請看下面的操作步驟
[低版本tomcat配置方法]
在開始菜單中,找到“Apache Tomcat 5.0”,并選擇“Configure Tomcat”,在彈出的對話框窗口中,切換到 Java VM 選項卡,并在 Java Options 輸入框的最前面輸入
-Xms256m -Xmx512m
即輸入框中的內容會像下面的代碼(與自己的環境有所區別)
-Xms256m -Xmx512m
-Dcatalina.home="C:\tomcat5"
-Djava.endorsed.dirs="C:\tomcat5\common\endorsed"
-Xrs
設置完后,點擊“確定”,并重啟tomcat即可。
三、查看現有tomcat的內存大小情況
1、啟動tomcat
2、訪問 http://localhost:8080/manager/status ,并輸入您在安裝tomcat時輸入的用戶與口令,如 admin ,密碼 admin(密碼是您在tomcat安裝時輸入的)
注:添加用戶,修改conf/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
3、進入了Server Status頁面,可以在JVM表格中看到
Free memory: 241.80 MB Total memory: 254.06 MB Max memory: 508.06 MB
上面的文字即代表了,當前空閑內存、當前總內存、最大可使用內存三個數據。
確定了最大內存足夠大時,tomcat即可正常運轉