Reference: https://time.geekbang.org/column/article/108139
参考指标
- GC频率:?频的FullGC会给系统带来?常?的性能消耗,虽然MinorGC相对FullGC来说好了许多,但过多的MinorGC仍会给系统带来压?。
- 内存:这?的内存指的是堆内存??,堆内存又分为年轻代内存和?年代内存。?先我们要分析堆内存??是否合适,其实是分析年轻代和?年代的?例是否合适。如果内存不?或分配不均匀,会增加FullGC,严重的将导致CPU持续爆满,影响系统性能。
- 吞吐量:频繁的FullGC将会引起线程的上下?切换,增加系统的性能开销,从?影响每次处理的线程请求,最终导致系统的吞吐量下降。
- 延时:JVM的GC持续时间也会影响到每次请求的响应时间。
具体调优方法
性能配置参数如果?定要改,那就必须基于?量的测试结果或线上的具体性能来进?调整,这是优化的前提
- 调整堆内存空间减少FullGC:通过?志分析,堆内存基本被?完了,?且存在?量FullGC,这意味着我们的堆内存严重不?,这个时候我们需要调?堆内存空间。
- 设置Eden、Survivor区?例:在JVM中,如果开启 AdaptiveSizePolicy,则每次 GC 后都会重新计算 Eden、From Survivor和 To Survivor区的??,计算依据是 GC 过程中统计的 GC 时间、吞吐量、内存占?量。这个时候SurvivorRatio默认设置的?例会失效。在JDK1.8中,默认是开启AdaptiveSizePolicy的,我们可以通过-XX:-UseAdaptiveSizePolicy关闭该项配置,或显?运?-XX:SurvivorRatio=8,将Eden、Survivor的?例设置为8:2。?部分新对象都是在Eden区创建的,我们可以固定Eden区的占??例,来调优JVM的内存分配性能。
原文地址:https://www.cnblogs.com/agilestyle/p/11487945.html
时间: 2024-10-28 19:39:21