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

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

说在前面

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

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

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

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

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

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

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

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

网络异常,图片无法展示
|

主要内容

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

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

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

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

网络异常,图片无法展示
|

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

网络异常,图片无法展示
|

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

网络异常,图片无法展示
|

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

网络异常,图片无法展示
|

网络异常,图片无法展示
|

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

网络异常,图片无法展示
|

网络异常,图片无法展示
|

给读者的建议

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

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

相关文章
|
算法 架构师 Java
阿里P8架构师爆肝分享内部开源的JVM垃圾回收PDF文档,共23.3W字
说在前面 本文讲解的内容是关于垃圾回收(Garbage Collection,GC)的文档 ,为什么要写关于垃圾回收的文档呢? 首先,垃圾回收对应用影响很大,主要表现在应用停顿时间、吞吐量、资源使用等方面,开发者选择一种语言时考虑的一个重要因素就是该语言是否支持垃圾回收以及支持哪些垃圾回收实现(要综合考虑开发难度、效率和运行效率)。 其次,Hotspot是最流行的Java虚拟机(Java Virtual Machine,JVM。 本文使用JVM指代Hotspot虚拟机),垃圾回收是Java虚拟机最重要的组成部分,也是最复杂的部分之一。以JDK 8为例,共计支持5种垃圾回收实现,提供了超过
89 0
|
3月前
|
XML 缓存 JSON
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
238 0
|
20天前
|
Java Apache Maven
将word文档转换成pdf文件方法
在Java中,将Word文档转换为PDF文件可采用多种方法:1) 使用Apache POI和iText库,适合处理基本转换需求;2) Aspose.Words for Java,提供更高级的功能和性能;3) 利用LibreOffice命令行工具,适用于需要开源解决方案的场景。每种方法都有其适用范围,可根据具体需求选择。
|
20天前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
76 1
|
1月前
|
索引 Python
PDF文件页面提取操作小指南
PDF文件页面提取操作小指南
|
1月前
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
|
30天前
|
计算机视觉 Python
Python操作PDF文件
Python操作PDF文件
|
1月前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
54 2
|
1月前
|
人工智能 计算机视觉 Python
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
|
1月前
|
存储 安全 网络安全
Python编程--使用PyPDF解析PDF文件中的元数据
Python编程--使用PyPDF解析PDF文件中的元数据