問題背景
最近測試環境服務總是崩潰,運維小哥全部重啟后還是崩潰,查看了服務運行情況占用內存確實挺高的,看來是時候優化一波jvm參數了。
優化前
top $(ps -e | grep java | awk '{print $1}' | sed 's/^/-p/')
優化后
nohup java -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar
${LUJING}/${NAME}/${NAME}.jar --spring.profiles.active=dev >${LUJING}/${NAME}/nohup.out 2>&1 &
總結
通過優化前后對比,我們發現通過jvm參數調整后,VIRT、RES、%MEM這幾個指標都有了明顯的變化。
VIRT—virtual memory usage虛擬內存
1、進程“需要的”虛擬內存大小,包括進程使用的庫、代碼、數據等,單位kb,VIRT=SWAP+RES
2、假如進程申請100m的內存,但實際只使用了10m,那么它會增長100m,而不是實際的使用量
RES:resident memory usage 常駐內存
1、進程當前使用的內存大小,但不包括swap out,單位kb, RES=CODE+DATA
2、包含其他進程的共享
3、如果申請100m的內存,實際使用10m,它只增長10m,與VIRT相反
4、關於庫占用內存的情況,它只統計加載的庫文件所占內存大小
%MEM
進程使用的物理內存百分比