本教程操作环境:windows7系统、java10版,DELL G3电脑。
1.概念
当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。
2.优化目的
(1)将进入老年代的对象数量降到最低
老年代GC相对来说会比新生代GC更耗时,因此,减少进入老年代的对象数量可以显著降低Full GC的频率。
(2)减少Full GC的执行时间
Full GC的执行时间比Minor GC要长很多,因此,如果在Full GC上花费过多的时间(超过1s),将可能出现超时错误。
3.参数
-Xms, -Xmx和-XX:NewRatio。-Xms和-Xmx参数通常是必须的,所以NewRatio的值将对GC性能产生重要的影响。
4.步骤
(1)监控GC的状态
(2)生成堆的dump文件
(3)分析dump文件
(4)分析结果,判断是否需要优化
(5)调整GC类型和内存分配
(6)不断的分析和调整
5.实例
例子是Full GC时间较长。
通过 jstat -gcutil 获取如下数据:
S0 S1 E O P YGC YGCT FGC FGCT GCT 12.16 0.00 5.18 63.78 20.32 54 2.047 5 6.946 8.993
Perm区域对于首次GC优化来说并不重要,当前,YGC的值更有价值。
下面是Minor GC和Full GC 的相关数据:
以上就是java中gc优化的方法,相信大家在使用gc的时候也会遇到内存堆积过多的问题,那么这时候对gc进行优化就很有必要了。学会本篇gc优化的方法后,赶快动手试试吧。