最近在維護一個java 程序 有關內存占用的問題,請各位大神科普。
在本地 windows 上 啟動tomcat 占用內存 幾十 M
期間處理的任務
1.程序向另一個服務器建立 客戶端連接 200多條 (netty) 並保持長連 每過80秒發送心跳。可用內存在每一次心跳都會有一定的下降並且沒有回升
2.有個Thread 會每過10秒到數據庫(mysql)獲取記錄 ,創建五條Thread(最大5條)對記錄獲取相關的連接(以上200多條連接中獲取)進行處理,可用內存也會下降
在已用內存到達一定高度,可用內存便會回升,這是在windows 測試的結果,內存使用情況我覺得很健康
放在linux 服務器上 tomcat 啟動內存就占用了200M多,每次心跳和處理記錄也在增加,但內存達到一定高度 可用內存並沒有回升,tomcat直接內存溢出了(生產環境)
我把測試環境的監控貼出來唉大家幫幫忙分析一下
linux服務器支持的內存理論上限是4G,修改內核以後能到32G,我的一個朋友做過一台16G的服務器,能認出來。
如果kernel啟用了PAE(物理地址擴展),則可以支持 到 64GB 內存。
以前(2009)需要安裝PAE-kernel才支持大於4G。
但是,建議裝 64bit Linux。