阿里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作为跨平台的实现,需要考虑如何利用不同硬件的特性,最大化地提高应用运行性能。最为典型的代表是部分硬件提供的弱内存顺序模型,需要虚拟机在正确性和性能之间取得平衡,而这也是虚拟机中垃圾回收实现的难点和重点。

image

主要内容

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

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

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

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

image

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

image

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

image

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

image

image

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

image

image

给读者的建议

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

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

相关文章
|
12天前
|
架构师 Java 程序员
GitHub标星百万的程序员转架构之路,竟被阿里用作内部晋升参考
架构师 架构师是很多程序员的奋斗目标,也可以说是职场生涯的一个重要选择方向,今天我就跟大家聊一聊如何从一个程序员成长为一个架构师。
|
18天前
|
算法 架构师 Java
阿里P8架构师爆肝分享内部开源的JVM垃圾回收PDF文档,共23.3W字
本文讲解的内容是关于垃圾回收(Garbage Collection,GC)的文档 ,为什么要写关于垃圾回收的文档呢? 首先,垃圾回收对应用影响很大,主要表现在应用停顿时间、吞吐量、资源使用等方面,开发者选择一种语言时考虑的一个重要因素就是该语言是否支持垃圾回收以及支持哪些垃圾回收实现(要综合考虑开发难度、效率和运行效率)。
|
1月前
|
小程序 数据可视化 数据库
云开发(微信-小程序)笔记(十七)---- cms(内容管理)及案例
云开发(微信-小程序)笔记(十七)---- cms(内容管理)及案例
26 0
|
3月前
|
前端开发 Oracle 关系型数据库
程序员装机必备利器列表
程序员装机必备利器列表
66 0
|
4月前
|
缓存 Kubernetes 算法
公开下载 | 300+页《服务端开发与面试知识手册》,12.8w字经典架构知识
公开下载 | 300+页《服务端开发与面试知识手册》,12.8w字经典架构知识
193 0
|
8月前
|
存储 监控 算法
JVM技术之旅-进阶分析内存布局特性
JVM技术之旅-进阶分析内存布局特性
84 0
JVM技术之旅-进阶分析内存布局特性
|
11月前
《深入理解高并发编程(第2版)》八大篇章,共433页,打包发布!!
大家好,我是冰河~~ 在 冰河技术 微信公众号中的【精通高并发系列】专题,更新了不少文章,有些读者反馈说,在公众号中刷历史文章不太方便,有时会忘记自己看到哪一篇了,当打开一篇文章时,似乎之前已经看过了,但就是不知道具体该看哪一篇了。相信很多小伙伴都会有这样的问题。那怎么办呢? 最好的解决方案就是我把这些文章整理成PDF电子书,免费分享给大家,这样,小伙伴们看起来就方便多了。
699 0
《深入理解高并发编程(第2版)》八大篇章,共433页,打包发布!!
|
缓存 Java
认真阅读完这篇文章熟练掌握阿里巴巴规范创建Java线程池
认真阅读完这篇文章熟练掌握阿里巴巴规范创建Java线程池
398 0
|
Java 数据库 数据安全/隐私保护
阿里巴巴Java开发手册———个人追加的见解和补充(一)
首先当我第一次看见这个的手册的时候或许和和你们是一样激动的,因为在java行业内我还没有看见有中文的规范,也可能是我读书少。总之,这是我见到的第一个中文的java规范。
2264 0
|
测试技术 程序员 安全
再谈文档必不可少
项目文档必不可少,必不可少,再小的项目,别人再和你吹嘘项目多么简单,领导再告诉你时间多么紧张,客户再不上线就要损失几十万,统统都不是你的问题,唯独不写文档是你的责任! 我在《人月神话》的解读中已经深入的理解了文档的必要性,很多时候人只是还不够强大,经常败在时间上,败在压力上。
1067 0
相关产品
云迁移中心
推荐文章
更多