如何减少tomcat内存使用量?
最近有部分用戶會問,為什么我的tomcat占用的內存這么高?如何才能把他減少點呢?
?
其實減少tomcat的內存使用量比較難,但是我們還是有一些辦法的!
?
要想減少tomcat內存使用量,就必須對tomcat和內存的原理和關系進行了解!
?
[tomcat和內存的原理]
?
Tomcat是運行在內存之上的,幾乎所有的軟件的運行都會占用內存,比如您運行個QQ軟件,他也占用內存,這個是物理規律,不需要我在多說什么,
?
我們會在每個人的tomcat上做好設置,允許他最大可使用多少內存,如果超出了,tomcat就不能在繼續運行,就會出現假死,網站打開比較慢,網站打不開的情況!
?
?
[是什么在消耗tomcat內存]
?
Tomcat運行在內存上的,tomcat里每增加一點東西(或者說每運行一個網頁),他都會占用相應的內存,比如我上傳了一個圖片,在瀏覽器里面訪問他,tomcat要讓這個圖片顯示,他會占用內存!!一個網頁也是這樣,比如您上傳了一個jsp網頁,他運行這個jsp網頁的時候,他會占用一定的內存!!
上面都還是靜態的比較好理解,我在說的動態的
比如一個jsp網頁他顯示數據庫里面的10條記錄,和顯示1w條記錄,他所消耗的內存是不一樣的,有時候用戶會問,為什么我的訪問量也不多大,為什么會怎么占用內存呢,這個就和您的訪問量,圖片的大小,數據庫表里面數據記錄的多少,放了多少個工程有關系了,訪問量只是影響內存的一個可能,還有很多影響內存的選項,我們需要綜合考慮!
?
?
[tomcat和內存的其他需要注意的情況]
?
有的用戶說,我現在用了250M內存,我升級到你們企業A的,企業A的是300M內存,這樣內存就夠用了吧!!?答案并不是肯定的,因為您的tomcat在24小時內是連續運行的,需要考慮他連續對內存占用的情況,當tomcat連續運行的時候,您的tomcat占用的內存也會連續的升高,至于升多高,這個不好預測,這個和您的訪問量,圖片的大小,數據庫的記錄多少,有直接關系,比如一個jsp網頁他調用數據庫里面的100條記錄,和調用1w條記錄,他所消耗的內存肯定是不一樣的
?
?
[如何減少tomcat內存]
?
減少內存比較困難,我只能從我經驗出發給大家做一些參考,可能不全面如果有更好的方法,歡迎在下面留言:
1:減少不必要的工程或者項目,我們就遇到過個用戶,他內存不夠用了,我們發現他webapps下放了很多工程,他說他沒訪問,應該不影響,其實這個是錯誤的,tomcat是不知道你要不要訪問的,tomcat會在啟動的時候把所有的工程或者項目都一股腦的加載進去,所以即使您不訪問他他也會加載,如果沒必要或者不打算使用他請刪除他,不要放在服務器上
?
2:盡量減少使用框架,開源軟件等,框架和開源軟件用起來是比較方便,但是他們加載了大量的jar文件,尤其是在tomcat的時候,都一起加載到tomcat內存里面,而且還不釋放,比如我們有框架,可能只是用了這個框架中的20%的功能,還有80%我們用不到,但是框架也一樣會把這80%加載到內存里面,造成我們的內存白白的浪費?[網站一旦成型在修改框架可能不現實,我只是列出來告訴大家有條件的話可以修改]
?
3:盡量減少對數據庫的操作,操作數據庫是極大的耗費內存的操作,尤其是多表聯合查詢,或者表數據比較大的時候,比如從幾百萬條數據里面檢索需要的數據的時候,那占用內存是直線上升的!?如果您的數據表比較大,請考慮壓縮他到合理的范圍內!比如把一個大表分為多個小表等
?
4:減少對文件的操作,讀寫文件也是比較占用內存的,?頻繁的操作一些文件,會造成內存的上升,如果在加以比較多的訪問量,這個內存消耗也是比較厲害的,尤其是一些文件索引,還有日志文件,一般我們不建議用戶使用文件索引,一旦使用內存很快就用完了,還不好排查什么地方出了問題,另外可以減少對日志的記錄,有的時候程序出問題,日志記錄的就比較多,一個日志文件就是幾百G,別說讀寫,就是打開這個文件,都需要很耗費內存的,要知道jsp對文件的讀寫都是在內存里操作的,所以大文件他占用的內存更是直線上升的,請減少對文件的操作!
?
5:圖片的大小,多少也會占用內存,尤其是一些大圖片,如果有條件的,可以把圖片整理下!!把不需要的刪除,把大圖壓縮后在上傳!!
?
6:要養成良好的代碼書寫規范,盡量少在代碼里申請變量,?要知道您在代碼里申請了String?aa=??“”;?的砍死簡單的內存在訪問量大的情況下,也消耗內存比較厲害的,另外還有就是在申請完數據庫連接的時候,記得釋放這個數據庫連接,要不然就會出現內存泄漏的問題...
?
?
7:盡量生成htm靜態網頁,?盡量大家把主頁或者訪問量比較大的網頁,想辦法生成htm的靜態網頁,這樣可以有效的減少內存,增加穩定性,您看我們的主頁(www.jspkongjian.net)全是htm靜態網頁,包括新聞這些東西,那是由于我們自己把主頁生成了htm的,目的就是減少內存,增加穩定性,我在這里把我們自己生成htm的代碼給出來,大家如果想也生成htm的,可以自己研究下?http://www.jspkongjian.net/news.jsp?id=396(生成htm網頁教程)
轉載于:https://my.oschina.net/liangzhenghui/blog/598450
總結
以上是生活随笔為你收集整理的如何减少tomcat内存使用量?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: drwxrwxrwx_你可能不知道的一些
- 下一篇: python网络协议编辑器_python