阿里P8架构师爆肝分享内部开源的JVM垃圾回收PDF文档,共23.3W字

简介: 说在前面本文讲解的内容是关于垃圾回收(Garbage Collection,GC)的文档 ,为什么要写关于垃圾回收的文档呢?首先,垃圾回收对应用影响很大,主要表现在应用停顿时间、吞吐量、资源使用等方面,开发者选择一种语言时考虑的一个重要因素就是该语言是否支持垃圾回收以及支持哪些垃圾回收实现(要综合考虑开发难度、效率和运行效率)。其次,Hotspot是最流行的Java虚拟机(Java Virtual Machine,JVM。本文使用JVM指代Hotspot虚拟机),垃圾回收是Java虚拟机最重要的组成部分,也是最复杂的部分之一。以JDK 8为例,共计支持5种垃圾回收实现,提供了超过

说在前面
本文讲解的内容是关于垃圾回收(Garbage Collection,GC)的文档 ,为什么要写关于垃圾回收的文档呢?

首先,垃圾回收对应用影响很大,主要表现在应用停顿时间、吞吐量、资源使用等方面,开发者选择一种语言时考虑的一个重要因素就是该语言是否支持垃圾回收以及支持哪些垃圾回收实现(要综合考虑开发难度、效率和运行效率)。

其次,Hotspot是最流行的Java虚拟机(Java Virtual Machine,JVM。

本文使用JVM指代Hotspot虚拟机),垃圾回收是Java虚拟机最重要的组成部分,也是最复杂的部分之一。以JDK 8为例,共计支持5种垃圾回收实现,提供了超过800个可以调整的参数,其中与垃圾回收相关的参数超过400个。这么多参数给用户理解和使用垃圾回收算法带来了很大困难。

目前已经有众多书籍和文章介绍JVM中垃圾回收的相关知识,为什么还要再写与垃圾回收相关的文档呢?最主要的原因是笔者希望以实际产品为例,介绍垃圾回收的原理、实现以及使用,帮助读者解决Java工程师日常工作中遇到的常见问题。例如:

1)垃圾回收原理过于抽象,原理和实现存在不少差距。不同的虚拟机在实现一款垃圾回收算法时,由于应用场景不同,或者设计目标不同,最终会采用不同的实现方法,而不同的实现方法会给用户正确、合理地使用虚拟机造成影响。

2)垃圾回收调优过于依赖经验。根据资料或者文档,可以通过JVM参数调整解决一些问题,但是很少有资料系统化地介绍为什么调整参数能够解决问题,以及调整参数后引起的潜在问题是什么。

3)垃圾回收实现与硬件的关系。垃圾回收算法是通用算法,与具体硬件平台无关。但是JVM作为跨平台的实现,需要考虑如何利用不同硬件的特性,最大化地提高应用运行性能。最为典型的代表是部分硬件提供的弱内存顺序模型,需要虚拟机在正确性和性能之间取得平衡,而这也是虚拟机中垃圾回收实现的难点和重点。
image.png

主要内容
本文涉及部分垃圾回收的理论知识,但更关注工程实践。

希望通过对实现的分析,让读者了解如何实现一款“令人满意”的垃圾回收器。“令人满意”通常是指满足业务诉求,并且综合考虑停顿时间、吞吐量、资源消耗、实现复杂度、稳定性等性能要求。

由于本文包含的细节内容实在是太多了,只把部分知识点截图出来粗略的介绍,共分为4大部分,四大部分里面又细分为16章的内容,16章又分为若干小节:

第一部分介绍虚拟机执行的基础知识以及垃圾回收的相关知识。

image.png

第二部分介绍JVM中实现的6种垃圾回收算法。

image.png

第三部分介绍JVM提供的用于控制垃圾回收算法的参数。

image.png

第四部分以鲲鹏920为例介绍ARM服务器以及在ARM服务器下如何实现GC才能充分发挥硬件性能。
image.png

image.png

如果需要获取到这份23.3W字深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化文档的小伙伴,可以点击此处获取即可!​

image.png

image.png

给读者的建议
建议读者从第一部分开始阅读,在阅读第二部分相关章节时可以结合第三部分对应章节提供的参数说明理解相关原理、实现,并掌握参数的使用方法。

第四部分作为扩展内容,适合对JVM实现感兴趣的读者阅读。

相关文章
|
8月前
|
存储 前端开发 架构师
阿里资深架构师带你深入浅出JVM!
JVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtime data area)
86 1
|
8月前
|
运维 算法 安全
阿里P8写出的《深入理解Java虚拟机3》轻松学会JVM底层
Java是目前用户最多、使用范围最广的软件开发技术,Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三E方Java框架(如Spring、 MyBatis等) 构成。在国内,有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富,相比而言,有关Java虚拟机的资料却显得异常贫乏。
|
8月前
|
网络协议 Java 关系型数据库
年薪50W阿里P7架构师必备知识:并发+JVM+多线程+Netty+MySQL
线程基础、线程之间的共享和协作一 线程基础、线程之间的共享和协作二 线程的并发工具类 线程的并发工具类、原子操作CAS 显式锁和AQS一 显式锁和AQS二 并发容器一 并发容器二 并发容器三、线程池一 线程池二、并发安全一
|
7月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的社区垃圾回收管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的社区垃圾回收管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
8月前
|
数据采集 数据安全/隐私保护 Python
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
|
8月前
|
架构师 Java 关系型数据库
一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL
每一个程序员都有自己清晰的职业规划和终极目标,无论之后是继续钻研技术,还是转管理岗、产品岗,都是需要自己具备有一定的实力,换句话说技术要牛逼。架构师,是很多程序员的终极目标,而成为一名Java架构师,那就需要对自己自身有一定要求,不仅技术能力要过硬,还需要有组织能力和提出解决方案的能力。那么作为架构师,需要掌握哪些技术呢?
一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL
|
8月前
|
小程序 NoSQL Java
在阿里晋升3次,5年拿下P8岗位,这份pdf记录了我的整个成长过程
每一个互联网工作者都拥有一个阿里梦,而这个阿里梦的实现,除了幸运,还要靠努力。
|
8月前
|
Arthas 架构师 Java
阿里P9级架构师马士兵花四小时让你搞懂JVM底层原理(附JVMpdf)
JVM面试难题 当面试官向你提问JVM的实战问题时,你是否感觉到无所适从? 想解决生产环境中的GC问题,你是否感觉到狗咬刺猬,无处下嘴? 面对JVM的海量参数,你是否感觉到迷茫无助? 看过很多的JVM文章,但当遇到了生产环境中真实问题的时候,你是否依然不知道如何进行分析排查?
|
8月前
|
消息中间件 前端开发 架构师
华为架构师复盘2024最全2340页面试题jvm+spring+redis+MQ+微服务
包括 Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、Vue、React、JavaScript、Android 大数据、阿里巴巴等大厂面试题等、等技术栈!
|
8月前
|
架构师 Java 数据库
阿里架构师花近十年时间整理出来的Java核心知识pdf(Java岗)
由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 整理了一份Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。