掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在Tomcat設(shè)計之初,因?yàn)榭紤]到客戶的服務(wù)器性能不同,防止虛擬內(nèi)存不足,所以Tomcat默認(rèn)設(shè)置JVM允許使用內(nèi)存數(shù)為最小64M,***128M,但是在一些項目占用資源比較龐大,或者高并發(fā)量的項目中,很容易造成內(nèi)存不足而Tomcat沒有任何征兆就自動停止。

Tomcat占用JVM內(nèi)存數(shù)修改方法及監(jiān)控方法
Tomcat本身是一個很好的服務(wù)器容器,免費(fèi),功能強(qiáng)大,身后被很多強(qiáng)大的公司和組織默默的支持著,造就了一個可以和weblogic等收費(fèi)容器抗衡的地位,但是Tomcat本身還是存在一些缺陷。
在Tomcat設(shè)計之初,因?yàn)榭紤]到客戶的服務(wù)器性能不同,防止虛擬內(nèi)存不足,所以Tomcat默認(rèn)設(shè)置JVM允許使用內(nèi)存數(shù)為最小64M,***128M,但是在一些項目占用資源比較龐大,或者高并發(fā)量的項目中,很容易造成內(nèi)存不足而Tomcat沒有任何征兆就自動停止。
***的辦法是修改Tomcat對JVM內(nèi)存使用的限制。
方法有兩個:
1,編輯%CATALINA_HOME%\bin下面的catalina.bat文件
在最上面***行前面寫上
- setJAVA_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兩個屬性,如SETCATALINA_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
代碼為
- <%
- RuntimeRuntimelRuntime=Runtime.getRuntime();
- out.println(”***BEGINMEMERYSTATISTICS***”);
- out.println(”FreeMomery:”+lRuntime.freeMemory()+””);
- out.println(”MaxMomery:”+lRuntime.maxMemory()+””);
- out.println(”TotalMomery:”+lRuntime.totalMemory()+””);
- out.println(”AvailableProcessors:
- “+lRuntime.availableProcessors()+””);
- out.println(”***ENDMEMERYSTATISTICS***”);
- %>
【編輯推薦】

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流