GC優化步驟
- 調優目標
- GC時間足夠小
- GC次數足夠少
- Full GC週期足夠長
- Full GC次數少
- 移轉到老年代的對象少
- 調優結果
- 代碼減少使用全局變量和大對象
- 調整新生代大小
- 調整老年大大小
- 選擇合適的GC收集器
- 調優步驟
- 監控GC狀態
- 生成Dump文件
- 分析Dump文件
- 調整參數
- 監控GC狀態
- 開啟GC日誌(3選1)
# -XX:+PrintGCDetails
# -XX:+PrintGCTimeStamps
# -XX:+PrintGCDateStamps
- 存放GC日誌檔
# -Xloggc:/gc.log
- 需注意之狀態
- Minor時間超過50ms
- Minor時間10秒內一次
- Full GC時間超過1秒
- Full GC時間10分鐘內一次
- Full GC無效果
- 生成Dump文件
- 開啟OOM Dump文件
# -XX:+HeapDumpOnOutOfMemoryError
- 存放Dump文件 *.hprof
# -XX:HeapDumpPath=D:\
- 分析Dump文件 *.hprof
- 中文開啟 .....jdk/bin/jvisualvm.exe
# jvisualvm --locale zh:CN
- D:\>Java\jdk1.8.0_241\bin\jvisualvm.exe --locale zh:CN
- 調整參數
- 其他參數
- 減少GC次數
- -Xmx = -Xms
- -XX:newSize = -XX:MaxNewSize
- 提高閥值 -XX:MaxTenuringThreshold
- 調整Old區
- 觀察Old區之峰值 , 適當調高Young區 , 但會增加mior gc時間 , 關鍵字NewRatio
- 硬體較好的設備可在Old區使用並行收集算法
# -XX:+UseParallelOldPC
- 調整Stack
- 每個線呈默認開啟 1M stack , 內存不變下可增加線呈數
- 重複演練
- 其他
- 吞吐量優先的並行收集器與響應時間優先的併發收集器選擇
沒有留言:
張貼留言