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区过小或过大