<返回更多

阿里的垃圾怎么回收?Java G1源码分析与调优手册

2020-06-23    
加入收藏

G1是目前最成熟的垃圾回收器,已经广泛应用在众多公司的生产环境中。我们知道,CMS作为使用最为广泛的垃圾回收器,也有令人头疼的问题,即如何对其众多的参数进行正确的设置。G1的目标就是替代CMS,所以在设计之初就希望降低程序员的负担,减少人工的介人。但这并不意味着我们完全不需要了解G1的原理和参数调优。

这份PDF尝试从G1的原理出发,系统地介绍新生代回收、混合回收、FullGC、 并发标记、Refine 线程等内容;同时依托于jdk8u的源代码介绍Hotspot如何实现G1,通过对源代码的分析来了解G1提供了哪些参数、这些参数的具体意义;最后PDF内还设计了一些示例代码,给出了G1在运行这些示例代码时的日志,通过日志分析来尝试调整参数并达到性能优化,还分析了参数调整可能带来的负面影响。

这份PDF的作者是一位阿里P9的大神!

第1章垃圾回收概述

本章介绍垃圾回收的发展及使用的算法,同时还介绍一些重要并常见的术语。该章的知识不仅仅限于本书介绍的G1,对于研读JVM文章或者JVM源码都有帮助。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

第2章G1的基本概念

本章介绍G1中的基本概念,包括分区、卡表、根集合、线程栈等和垃圾回收相关的基本知识点。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

第3章G1的对象分配

本章介绍G1是如何分配对象的,包括TLAB和慢速分配,G1的对象分配和其他垃圾回收器的对象分配非常类似,只不过在分配的时候以分区为基础,除此之外没有额外的变化,所以该章知识不仅仅适用于G1也适用于其他垃圾回收器,最后介绍了参数调优,同样也适用于其他的垃圾回收器。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

第4章G1的Refine线程

本章介绍G1 Refine 线程,包括G1如何管理和处理代际引用,从而加快垃圾回收速度,介绍了Refinement 调优涉及的参数;虽然CMS也有卡表处理代际引用,但是G1的处理和CMS并不相同,Refine 线程是G1新引入的部分。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

第5章新生代回收

本章介绍新生代回收,包括G1如何进行新生代回收,包括对象标记、复制、分区释放等细节,还介绍了新生代调优涉及的参数。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

第6章混合回收

本章介绍混合回收。主要介绍G1的并发标记算法及其难点,以及G1中如何解决这个难点,同时介绍了并发标记的步骤:并发标记、Remark (再标记)和清理阶段;最后还介绍了并发标记的调优参数。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

这份蓝光版JAVA G1源码分析和调优PDF,由于内容过多,不浪费大家的时间,小编已经整理成册,需要免费领取的朋友,麻烦帮忙转发一下这篇文章+关注我,然后私信【调优】二字获取。

第7章Full GC

第7章介绍Full GC。在G1中,Full GC对整个堆进行垃圾回收,该章介绍G1的串行FullGC和JDK10之后的并行FullGC算法。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

第8章G1中的引用处理

本章介绍垃圾回收过程中如何处理引用,该功能不是G1独有的,也适用于其他垃圾回收器。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

第9章G1 的新特性:字符串去重

第9章介绍G1的新特性:字符串去重。根据OpenJDK的官方文档,该特性可平均节约内存13%左右,所以这是一个非常有用的特性,值得大家尝试和使用。另外,该特性和JDK中String类的intern方法有一些类似的地方,所以该章还比较了它们之间的不同。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

第10章线程中的安全点

本章介绍线程中的安全点。安全点在实际调优中涉及的并不多,所以很多人并不是特别熟悉。实际上,垃圾回收发生时,在进入安全点中做了不少的工作,而这些工作基本上是串行进行的,这些事情很有可能导致垃圾回收的时间过长。该章除了介绍如何进入安全点之外,还介绍了在安全点中做的一些回收工作,以及当发现它们导致GC过长时该如何调优。

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

第11章垃圾回收器的选择、第12章新一代垃圾回收器

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

阿里的垃圾怎么回收?Java G1源码分析与调优手册
 
 
 

这份蓝光版Java G1源码分析和调优PDF,由于内容过多,不浪费大家的时间,小编已经整理成册,需要免费领取的朋友,麻烦帮忙转发一下这篇文章+关注我,然后私信【调优】二字获取。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>