为什么要进行垃圾回收器的调优
原因如下:
1、常规的调优手段,都是从升级jdk版本、调整jvm参数、调整jvm垃圾回收器的角度,进行调优的。
2、jvm的垃圾收集器,都是有gc停顿(stop the world),gc停顿的意思是,在它进行,垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。这项工作实际上是由虚拟机在后台自动发起和自动完成的,在用户不可见的情况下把用户正常工作的线程全部停掉,这对很多应用来说,都是难以接受的,从JDK1.3开始,一直到现在的最新的JDK1.7,HotSpot虚拟机开发团队为消除或者减少工作线程因内存回收而导致停顿的努力一直在进行着,从Serial收集器到Parallel收集器,再到Concurrent Mark Sweep(CMS)乃至GC收集器的最前沿成果Garbage First(G1)收集器,我们看到了一个个越来越优秀(也越来越复杂)的收集器的出现,用户线程的停顿时间在不停的缩短,但是仍然没有办法完全消除(这里暂不包括RTSJ中的收集器)。寻找更优秀的垃圾收集器的工作仍在继续!
因为有了GC停顿时间,导致用户线程出现停顿,进而影响系统性能(延迟、吞吐量),影响用户使用体验。
因此需要进行jvm的垃圾收集器的调优。不同的垃圾收集器对GC停顿时间或其他做了不同处理和优化,有各自的原理、使用场景、优缺点。正因为有不同的使用场景,才通过jvm的垃圾收集器的替换设置,才能满足系统的性能(延迟和吞吐量)要求,才能给用户良好体验。
页面问题(页面优化)->jvm参数调整和jvm垃圾回收器替换设置->jvm的垃圾收集器的使用场景、优缺点