對JVM內存的系統級的調優主要的目的是減少GC的頻率和Full GC的次數。
1. Full GC
會對整個堆進行整理,包括Young、Tenured和Perm。Full GC因為需要對整個堆進行回收,所以比較慢,因此應該盡可能減少Full GC的次數。
2. 導致Full GC的原因
2.1 年老代(Tenured)被寫滿
調優時盡量讓對象在新生代GC時被回收、讓對象在新生代多存活一段時間和不要創建過大的對象及數組避免直接在舊生代創建對象 。
2.2 持久代Pemanet Generation空間不足
增大Perm Gen空間,避免太多靜態對象 , 控制好新生代和舊生代的比例
2.3 System.gc()被顯示調用
垃圾回收不要手動觸發,盡量依靠JVM自身的機制
在對JVM調優的過程中,很大一部分工作就是對于FullGC的調節,下面詳細介紹對應JVM調優的方法和步驟。