問題表現(xiàn):
當(dāng)用戶執(zhí)行
一個大數(shù)據(jù)的應(yīng)用時(
凈字節(jié)碼量約為
5M
)時,系統(tǒng)會提示出錯:
前臺錯誤為:
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
內(nèi)存溢出而引發(fā)的問題,主要原因是
JVM
的虛擬內(nèi)存默認(rèn)為
128M
,當(dāng)超過這個值時就把先前占用的內(nèi)存釋放,而導(dǎo)致好象
TCP/IP
丟包的假象,出現(xiàn)
HTTP500
的錯誤。
?????
解決方法主要是加大
TOMCAT
可利用內(nèi)存,并在程序當(dāng)中加大內(nèi)存使用。
解決方法:
方法:加大
TOMCAT
可利用內(nèi)存:
在
TOMCAT
的目錄下,也就是在
TOMCAT41/bin/catalina.bat
文件最前面加入
set JAVA_OPTS=-Xms800m -Xmx800m
表現(xiàn)效果是當(dāng)你啟動
TOMCAT
時,系統(tǒng)內(nèi)存會增加近
800M
使用
操作方法:
1
)、先關(guān)掉
WINDOWS
服務(wù)當(dāng)中的
TOMCAT4
服務(wù)。
2
)、再找到
TOMCAT/BIN
目錄下
startup.bat
,雙擊打開它,你會發(fā)現(xiàn)現(xiàn)
WINDOWS
內(nèi)存占用會增加近
800M
。
3
)、執(zhí)行程序,因為是
TOMCAT
重新編譯程序,所以第一次會比較慢。
結(jié)論:
經(jīng)過測試,我們得出如下數(shù)據(jù):
當(dāng)
系統(tǒng)傳輸約
2000
條數(shù)據(jù)時,大約近
12M
的凈數(shù)據(jù)(不壓縮時),系統(tǒng)輔助運行的內(nèi)存大約占用
150M
左右的空間,也就是近
200M
的內(nèi)存占用,而我們擴大了近
800M
的
JAVA
內(nèi)存使用,這對于業(yè)務(wù)本身來說是足夠了。所以你們不用擔(dān)心大數(shù)據(jù)量的傳遞問題。
基于
JAVA
虛擬機的原理,
JAVA
自動有垃圾回收機制,也就是在你對一些內(nèi)存長時間不使用時(近
2
分鐘,取決于使用頻度和優(yōu)先級等),就會自動垃圾回收,從而釋放不用的內(nèi)存占用。
posted on 2006-08-04 20:15
SIMONE 閱讀(850)
評論(0) 編輯 收藏