阿里内网 GC 面试小册,仅 7 天 Github 获赞 96.9K
ava 垃圾回收
我们都知道 Java 在运行时内存分为了五个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。其中程序计数器、虚拟机栈、本地方法栈所占用的内存是不需要垃圾收集的,这三个区域的内存随着线程生,随着线程死,我们需要关注的其实只有堆和方法区这两块内存的垃圾收集。这时候就需要用到 GC 技术了。
对于垃圾回收概念,它一出现常常伴随着一连串的问题:
GC 具体做了什么?
哪些内存需要回收?
什么时候回收?
怎么回收?
垃圾回收算法 &垃圾回收器有哪些?
......
如果你是一个新手,这些问题扑面而来的时候你肯定会一脸懵逼,不知道该怎么办。本着遇到问题就要解决问题的原则,今天小编为大家带来了一份 Github 爆火的 GC 面试小册,虽然它的体系结构与其他“GC 书”一样,大致分为算法篇与实现篇两部分。但细节之处却是与大众不同,大家看了就知道,差距不止一点点。
在算法篇中,详细解释 GC 算法_G1GC 的原理。在实现篇中,结合实用 JVM,聚焦了算法篇中没有详细讲解的实现部分。原文档 PDF 打开方式:我的学习笔记
不多 BB,来看主要内容
算法篇
目录一览




内容一览
G1GC 堆结构

并发标记

GC 预测转移时间

G1GC 新生代区域

GC 执行的时机

实战篇
目录一览






内容一览
准备工作

对象管理功能

G1GC 堆结构

内存分配流程

线程生命周期

GC 线程并行执行的流程

并发 GC 安全点

HotSpotVM 的执行流程

JT 编译器的写屏障

评论