這段時間一直在用StyleReport做報(bào)表,把報(bào)表的web系統(tǒng)部署到Tomcat5.5.20上之后,
一直都是內(nèi)存溢出,煩的我頭都大了。今天終于解決了,哈哈! 記下來,以備忘。
我自己的辦法:
用myEclipse啟動Tomcat時的設(shè)置,如下圖 (這里竟然不能上傳圖片,只好用文字描述了)
在myEclipse中選擇:
Window->Preferences,
在彈出的窗口的左邊的數(shù)上選擇:
MyEclipse Enterprise workbench->Servers->Tomcat->Tomcat5.x
(我用的是Tomcat5.5.20)->JDK,
這時右邊的面板下方出現(xiàn)一個 Optional Java VM argumenets的文本域,
在里面加入: -Xmn512m -Xmx800m
其中:-Xmn512m –Xmx800m的意思java虛擬機(jī)的
最小內(nèi)存為512M,
身后被很多強(qiáng)大的公司和組織默默的支持著,
造就了一個可以和weblogic等收費(fèi)容器抗衡的地位,但是tomcat本身還是存在一些缺陷。
在tomcat設(shè)計(jì)之初,因?yàn)榭紤]到客戶的服務(wù)器性能不同,防止虛擬內(nèi)存不足,
所以tomcat默認(rèn)設(shè)置jvm允許使用內(nèi)存數(shù)為最小64M,最大128M,
但是在一些項(xiàng)目占用資源比較龐大,或者高并發(fā)量的項(xiàng)目中,
很容易造成內(nèi)存不足而tomcat沒有任何征兆就自動停止。
最好的辦法是修改tomcat對jvm內(nèi)存使用的限制。
方法有兩個:
1,編輯%CATALINA_HOME%/bin下面的catalina.bat文件,
在最上面第一行前面寫上 set JAVA_OPTS=-Xms512m -Xmx1024m
其中-Xms表示jvm最小內(nèi)存數(shù),-Xmx表示最大內(nèi)存數(shù)
比如,我這里都設(shè)置成最小512,最大1024
當(dāng)然,這個最小最大并不是只能使用1024的意思,其實(shí)這個設(shè)置是對系統(tǒng)來設(shè)置的,
因?yàn)檫@個jvm占用內(nèi)存數(shù)實(shí)際上是針對虛擬內(nèi)存來說,這個設(shè)置表示,
無 論系統(tǒng)怎么占用虛擬內(nèi)存,都要保證最小512M的虛擬內(nèi)存共給jvm使用,
當(dāng)然,就算我jvm占用再大,也不會超過1024,來威脅系統(tǒng)的內(nèi)存使用 。
2,在環(huán)境變量里面添加如下兩個值
加上TOMCAT_OPTS, CATALINA_OPTS兩個屬性,
如 SET CATALINA_OPTS= -Xms512m -Xmx1024m;
意義同上 但是如何查看jvm內(nèi)存使用多少呢?
最簡單的辦法就是打開任務(wù)管理器–>進(jìn)程–>查看–>選擇列,
選上虛擬內(nèi)存數(shù)->確 定,就會看見虛擬內(nèi)存數(shù)了,
這時,你會看見虛擬內(nèi)存會有512~1024M的空間被占用,
那么就是被你設(shè)定好的值所占用了,jvm的內(nèi)存使用,
就會在這個 被占用的范圍內(nèi)使用
另外一個辦法就是寫一個小腳本,如命名為ram.jsp
代碼為