解決tomcat outOfMemoryError

tianshilang發表於2009-02-28

專案中要從其它系統的webservice介面中獲取資料,由於那個系統是用.net實現的webservices,返回的是一個xml文件格式的字串,這個字串的大小最大有1.2m,在抓取的過程中經常莫名其妙的停下來,也沒有異常,後跟斷點除錯後發現java.lang.OutOfMemoryError: Java heap space。在網上搜了一下得到如下結論:

http://www.zxbc.cn/html/20080505/33993.html

     使用Java程式從資料庫中查詢大量的資料時出現異常:
java.lang.OutOfMemoryError: Java heap space
在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將丟擲此異常資訊。
JVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定.JVM在啟動的時候會自動設定Heap size的值,其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設定。
解決辦法:
tomcat_home/bin下catalina.bat(win)或catalina.sh(linux)執行程式碼前加上:
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m 

 

後又在je的六合江山的部落格上的http://webxyz.iteye.com/blog/282569

發現原來還有一個效能監視控制檯。

按照其說明安裝以後,沒有調整堆的大小以前,分配的堆記憶體是6.2m,難怪出出現OutOfMemoryError

調整後則順暢執行

相關文章