JVM性能調優的經驗
整個堆大小=年輕代大小 + 年老代大小 + 持久代大小
-Xms : 最小可用內存
-Xmx : 最大可用內存
-Xmn(New Generation) : 年輕代大小
-XX:SurviorRatio=x : 設置年輕代中Eden區與Survivor區的大小比值,2:eden = x
-XX:MaxTenuringThreshold : 控制對象在經歷多少此Minor GC後轉入年老代,所以又稱爲新生代存活週期
JVM調優主要是內存管理方面的調優,包括各個代的大小、GC策略等。
因爲GC會自動掛起應用線程,嚴重影響性能
調優方法:
1.代大小的調整
–Xms和-Xmx設置爲相同的值,避免在運行時不斷地擴展JVM內存空間
1.1避免新生代大小設置過小
新生代過小時發生的現象:
1. Minor GC的次數更加頻繁
2. 有可能導致Minor GC對象直接進入年老代,如果新進入的對象佔據了年老代的空間則會導致Full GC
1.2避免新生代大小設置過大
新生代過大時發生的現象:
1. 年老代變小了,可能導致Full GC頻繁執行
2. Minor GC耗時大幅增加
So:推薦新生代佔堆大小的33%
1.3避免Survior區過小或過大