JVM G1源码分析和调优

G1作为目前最新最成熟的垃圾回收器,已经广泛的应用在众多公司的生存环境中。我们知道CMS作为使用最为广泛的垃圾回收器,最令人头疼的就是其众多的参数以及参数的设置。G1的目标就是替代CMS,所以在设计之初就希望降低程序员的负担,减少人工的介入。但这并不意味着我们完全不需要了解原理和参数调优。笔者在实际中遇到一些因参数不正确的设置导致GC停顿时间过长的案例时有发生。但要正确的设置参数并不容易,这里涉及两个方面:第一需要对G1的原理熟悉,只有熟悉G1的原理才知道调优的方向;第二能分析和解读G1运行的日志信息,根据日志信息找到G1运行过程中异常信息,并推断哪些参数可以解决这些异常。

基于目前的现状,《JVM G1源码分析和调优》这本书尝试从G1的原理出发,系统的介绍了新生代收集、混合收集、Full GC、并发标记、Refine、Evacuation等内容;同时依托于jdk8u的源代码介绍Hotspot是如何实现G1,通过源代码的分析理解算法以及了解G1提供了哪些参数以及这些参数的具体意义;最后设计了一些示例代码,给出了G1在运行这些示例代码时的日志,通过日志分析,尝试说明如何调整参数达到性能优化,并且也指出了参数调整可能带来的负面影响。

乍听起来,G1非常复杂,应该会有很多的参数。实际上在JDK8的G1实现中,一共新增了93个参数,其中开发参数(develop)有41个,产品参数(product)有31个,诊断参数(diagnostic)有9个,实验参数(experimental)有12个。开发参数需要在调试版本中才能进行验证,其余的三类参数都可以在发布版本中打开、验证和使用。《JVM G1源码分析和调优》这本书覆盖了发布版本涉及的所有参数(除了几个用于验证的诊断参数外),可供读者理解G1以及调优G1。


�Ʋ�ɲ��

你可能感兴趣的:(JVM G1源码分析和调优)