优化一个java程序的执行有很多种途径,下面分别从代码、并发、缓存、异步、网络、jvm调优等方面一一描述。
GC调优
先说一下经验,就是要不断的去调,选择一个合适的堆大小,再去应用
调优的目的
GC次数够少
GC时间够小
调优原则和步骤
1、大多数的java应用程序不需要GC调优
2、大多数需要GC调优的不是参数问题,是代码问题
3、GC调优是最后的手段,逼不得已才用
调优调的是什么?
第一:选择合适的GC回收器
第二:选择合适的堆大小
第三:选择年轻代在堆中的大小
1、监控GC的状态
2、分析GC结果,判断是否要优化
如果minor GC时间<50ms ,且10s一次,说明年轻代是比较合适的
1、打印GC日志 ,启动时jvm添加参数
-XX:+PrintGCDetails 打印GC日志、
-Xlogger:path 指定日志输出目录
2、通过查看GC日志
[GC (Allocation Failure) [PSYoungGen: 71530K->5114K(71680K)] 71996K->8976K(159232K), 0.0080597 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC (Metadata GC Threshold) [PSYoungGen: 61449K->7974K(140288K)] 65310K->11844K(227840K), 0.005669