策略 1:將新對象預留在新生代,由于 Full GC 的成本遠高于 Minor GC,因此盡可能將對象分配在新生代是明智的做法,實際項目中根據 GC 日志分析新生代空間大小分配是否合理,適當通過“-Xmn”命令調節新生代大小,最大限度降低新對象直接進入老年代的情況。
策略 2:大對象進入老年代,雖然大部分情況下,將對象分配在新生代是合理的。但是對于大對象這種做法卻值得商榷,對于大對象,可以設置直接進入老年代(當然短命的大對象對于垃圾回收老說簡直就是噩夢)。?
策略 3:合理設置進入老年代對象的年齡,-XX:MaxTenuringThreshold 設置對象進入老年代的年齡大小,減少老年代的內存占用,降低 full gc 發生的頻率。
策略 4:設置穩定的堆大小,堆大小設置有兩個參數:-Xms 初始化堆大小,-Xmx 最大堆大小。
策略5:注意:如果滿足下面的指標,則一般不需要進行 GC 優化:
MinorGC 執行時間不到50ms;Minor GC 執行不頻繁,約10秒一次;Full GC 執行時間不到1s;Full GC 執行頻率不算頻繁,不低于10分鐘1次。
擴展資料:
調優原則
在調優之前,我們需要記住下面的原則:
多數的 Java 應用不需要在服務器上進行 GC 優化;多數導致 GC 問題的 Java 應用,都不是因為我們參數設置錯誤,而是代碼問題;在應用上線之前,先考慮將機器的 JVM 參數設置到最優(最適合)。
減少創建對象的數量;減少使用全局變量和大對象;GC 優化是到最后不得已才采用的手段;在實際使用中,分析 GC 情況優化代碼比優化 GC 參數要多得多。
調優目的
將轉移到老年代的對象數量降低到最小;減少 GC 的執行時間。
參考資料來源:百度百科——參數優化