如何減小tomcat內存使用量?

最近有部分用戶會問,爲何個人tomcat佔用的內存這麼高?如何才能把他減小點呢?web

 

其實減小tomcat的內存使用量比較難,可是咱們仍是有一些辦法的!數據庫

 

要想減小tomcat內存使用量,就必須對tomcat和內存的原理和關係進行了解!瀏覽器

 

[tomcat和內存的原理]tomcat

 

Tomcat是運行在內存之上的,幾乎全部的軟件的運行都會佔用內存,好比您運行個QQ軟件,他也佔用內存,這個是物理規律,不須要我在多說什麼,服務器

 

咱們會在每一個人的tomcat上作好設置,容許他最大可以使用多少內存,若是超出了,tomcat就不能在繼續運行,就會出現假死,網站打開比較慢,網站打不開的狀況!app

 

 

[是什麼在消耗tomcat內存]框架

 

Tomcat運行在內存上的,tomcat裏每增長一點東西(或者說每運行一個網頁),他都會佔用相應的內存,好比我上傳了一個圖片,在瀏覽器裏面訪問他,tomcat要讓這個圖片顯示,他會佔用內存!!一個網頁也是這樣,好比您上傳了一個jsp網頁,他運行這個jsp網頁的時候,他會佔用必定的內存!!webapp

上面都仍是靜態的比較好理解,我在說的動態的jsp

好比一個jsp網頁他顯示數據庫裏面的10條記錄,和顯示1w條記錄,他所消耗的內存是不同的,有時候用戶會問,爲何個人訪問量也很少大,爲何會怎麼佔用內存呢,這個就和您的訪問量,圖片的大小,數據庫表裏面數據記錄的多少,放了多少個工程有關係了,訪問量只是影響內存的一個可能,還有不少影響內存的選項,咱們須要綜合考慮!網站

 

 

[tomcat和內存的其餘須要注意的狀況]

 

有的用戶說,我如今用了250M內存,我升級到大家企業A,企業A的是300M內存,這樣內存就夠用了吧!! 答案並非確定的,由於您的tomcat24小時內是連續運行的,須要考慮他連續對內存佔用的狀況,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網頁教程)

相關文章
相關標籤/搜索