Java中如何做GC调优?

首先要明确以下几个东西:
(1)评价GC性能的指标有哪些?
一个是吞吐量,另一个是最大停顿时间。什么叫吞吐量?GC里面的吞吐量说的是cpu花在垃圾回收的时间和花在应用程序上的时间的占比。什么叫最大停顿时间?就是中断应用程序来做垃圾回收的应用停顿时间。

(2)常用的GC有哪些?
GC分为3大类:serial 、 parallel、concurrent(CMS、G1)。parallel和concurrent是什么意思?parallel又叫吞吐量有限的收集器,它的意思是说:多个GC线程并行,但是GC线程与应用线程不是并行。concurrent又叫响应时间优先的收集器,它是说GC线程可以和应用线程并行执行。CMS和G1都是concurrent的垃圾收集器,JDK9里面G1已经是默认的垃圾收集器了。

(3)不同GC的日志格式是啥样的?
每一种GC的日志格式都是不一样的。

(4)如何做GC调优?
一般就是通过日志分析工具,分析GC的日志,来得出前面说的2个性能指标的数值,然后通过日志查找出现fullGC的原因,主要的原则就是消灭FullGC,减少MinorGC,最终的目标就是在保证最大停顿时间的前提之下,最大化吞吐量。

这个视频讲的挺好:http://coding.imooc.com/class/241.html


你可能感兴趣的:(java)