修改Tomcat記憶體大小(java.lang.OutOfMemoryError: Java heap space)

來源:互聯網
上載者:User
 Tomcat預設可以使用的記憶體為128MB,在較大型的應用項目中,這點記憶體是不夠的,輕微時,會使系統效能急劇下降,嚴

重時,將導致系統無法運行,影 響系統的穩定性。當記憶體不夠用時,常見的問題就是報tomcat記憶體益處錯誤,從兒導致客

戶端包500錯誤的,如下:解決方案主要是加大TOMCAT可利 用記憶體,並在程式當中加大記憶體使用量。因此根據應用的需求,

有必要調整JVM使用記憶體的大小。現在將手工修改tomcat記憶體的方法及注意事項列出:

tomcat提供了兩種安裝模式,即免安裝(*.zip)和安裝(*.exe)方式。針對不同的安裝方式下修改tomcat記憶體大小的方

法幾注意問題(windows環境):

方式1(免安裝(*.zip)):當選擇安裝方式時,可以在安裝tomcat的過程進行設定tomcat初始化記憶體的大小。但是假如說

在安裝時沒有選擇,或者應用改變了,需要增加tomcat記憶體時怎麼半呢?此時,我們就要手工修改tomcat的一些檔案了。

看了很多網上的資料,都是說修改<CATALINA_HOME>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時,實際的記憶體還是預設的,修改的設定

並沒有起作用;而通過 <CATALINA_HOME>bin\startup.bat 啟動卻是生效的。這是為什麼呢?因為在安裝過程中,JVM

的初始化參數已經寫在註冊表中了,由於沒有修改註冊表中相關參數,所以以windows服務方式 啟動時,修改的並沒有生

效。而通過<CATALINA_HOME>bin\startup.bat 啟動直接是通過<CATALINA_HOME>bin\catalina.bat檔案中的配置的。

你需要重新載入到系統服務中才生效,或者你手工在註冊表中 尋找修改啟動值,載入到服務中的時候參數已經配置好了

,自己修改startup.bat不會改變註冊表中的參數設定。

解決方案:
方法一:修改註冊表中的參數,加入JVM初始化記憶體的參數:

HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationTomcat Service ManagerTomcat5ParametersJavaOptions

值為

-Dcatalina.home="C:ApacheGroupTomcat 5.0"
-Djava.endorsed.dirs="C:ApacheGroupTomcat 5.0commonendorsed"
-Xrs

如加入 -Xms512m -Xmx800m

方法二:通過bin\startup.bat 啟動
首先配置環境變數
配置好以上環境變數之後,各系統變數的值如下:
JAVA_HOME:C:\Program Files\Java\jdk1.5.0_06
CATALINA_HOME:D:\jakarta-tomcat-5.0.30
CLASSPATH:.;%JAVA_HOME%\lib;%CATALINA_HOME%\common\lib;
Path:%JAVA_HOME%\bin;%CATALINA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%
SystemRoot%\System32\Wbem
然後就可以通過bin\startup.bat 啟動

 

方式(2安裝(*.exe)):針對免安裝的使用者,也可以通過將tomcat註冊為windows的一個服務的方式來實現:我們可以對

service.bat檔案做一些其他修改,使tomcat更加能滿足我們各種不同需求時的要求:
通過開始-找到tomcat下的 configure tomcat 在控制視窗上選擇java 然後 在Initial memory pool:填寫 256,Maximum

memory pool:512

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.