1. 調優時機:
a. heap 內存(老年代)持續上漲達到設置的最大內存值;
b. Full GC 次數頻繁;
c. GC 停頓時間過長(超過1秒);
d. 應用出現OutOfMemory 等內存異常;
e. 應用中有使用本地緩存且佔用大量內存空間;
f. 系統吞吐量與響應性能不高或下降。
2. 調優原則:
a. 多數的Java應用不需要在伺服器上進行JVM優化;
b. 多數導致GC問題的Java應用,都不是因為我們參數設置錯誤,而是代碼問題;
c. 在應用上線之前,先考慮將機器的JVM參數設置到最優(最適合);
d. 減少創建對象的數量;
e. 減少使用全局變量和大對象;
f. JVM優化是到最後不得已才採用的手段;
g. 在實際使用中,分析GC情況優化代碼比優化JVM參數更好;
3. 調優目標:
a. GC低停頓;
b. GC低頻率;
c. 低內存佔用;
d. 高吞吐量;
4. 調優步驟:
a. 分析GC日誌及dump文件,判斷是否需要優化,確定瓶頸問題點;
b. 確定jvm調優量化目標;
c. 確定jvm調優參數(根據歷史jvm參數來調整);
d. 調優一臺伺服器,對比觀察調優前後的差異;
e. 不斷的分析和調整,知道找到合適的jvm參數配置;
f. 找到最合適的參數,將這些參數應用到所有伺服器,並進行後續跟蹤。
小程序→IT面試題練習:一個可以充電的面試題庫。