一份阿里内部 GC 面试收册,仅一周 Github 获赞 96.9K
Java 垃圾回收
我们都知道 Java 在运行时内存分为了五个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。其中程序计数器、虚拟机栈、本地方法栈所占用的内存是不需要垃圾收集的,这三个区域的内存随着线程生,随着线程死,我们需要关注的其实只有堆和方法区这两块内存的垃圾收集。这时候就需要用到 GC 技术了。
对于垃圾回收概念,它一出现常常伴随着一连串的问题:
GC 具体做了什么?
哪些内存需要回收?
什么时候回收?
怎么回收?
垃圾回收算法 &垃圾回收器有哪些?
......
如果你是一个新手,这些问题扑面而来的时候你肯定会一脸懵逼,不知道该怎么办。本着遇到问题就要解决问题的原则,今天小编为大家带来了一份 Github 爆火的 GC 面试小册,虽然它的体系结构与其他“GC 书”一样,大致分为算法篇与实现篇两部分。但细节之处却是与大众不同,大家看了就知道,差距不止一点点。
在算法篇中,详细解释 GC 算法_G1GC 的原理。在实现篇中,结合实用 JVM,聚焦了算法篇中没有详细讲解的实现部分。【有需要的可以-->点击这里即可获取我的资料笔记<--- 即可】
不多 BB,来看主要内容
算法篇
目录一览
![](https://static001.geekbang.org/infoq/aa/aa16497e8820d87ab2e7781aef9291b9.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
![](https://static001.geekbang.org/infoq/e4/e421c170b8f19cad0445a0c061f3a33e.png)
![](https://static001.geekbang.org/infoq/7c/7c41b96cd0efca97984179ced596cee0.png)
![](https://static001.geekbang.org/infoq/65/658ee658084d02c8de4bcf92de9fa6df.png)
内容一览
G1GC 堆结构
![](https://static001.geekbang.org/infoq/16/16dea8e6900bf0b9af6f22dbbbf4f1ea.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
并发标记
![](https://static001.geekbang.org/infoq/8e/8ee99d42355b8152eaec479bc286f98c.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
GC 预测转移时间
![](https://static001.geekbang.org/infoq/ea/ea398851a94970bf1c632a71a0750ef4.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
G1GC 新生代区域
![](https://static001.geekbang.org/infoq/b8/b88c092573d32745b026c32aa2bfa471.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
GC 执行的时机
![](https://static001.geekbang.org/infoq/ba/ba22ef172f1231ad96e9467d9d6dcba3.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
实战篇
目录一览
![](https://static001.geekbang.org/infoq/7e/7e4dc8378fd9787691caa5c9319a842a.png)
![](https://static001.geekbang.org/infoq/69/69ae8f6424e0289e43673bb18ce808f9.png)
![](https://static001.geekbang.org/infoq/29/29c3657d2c740a82b77c5591f7266df2.png)
![](https://static001.geekbang.org/infoq/01/0192d268760ca9e2704be91e98e167f9.png)
![](https://static001.geekbang.org/infoq/89/897ec3f581046465e2adfa051a774521.png)
![](https://static001.geekbang.org/infoq/3c/3c6907237e7716a5fcc9a55921e467dd.png)
内容一览
准备工作
![](https://static001.geekbang.org/infoq/95/95baefbb80aadad15acbfa56408e586d.png)
对象管理功能
![](https://static001.geekbang.org/infoq/b0/b0c7965f10723bfbf384de84cd6a38ed.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
G1GC 堆结构
![](https://static001.geekbang.org/infoq/2d/2d5a1b1db5713edc5709c7072784a55f.png)
内存分配流程
![](https://static001.geekbang.org/infoq/60/602a474225fbbfa89ee8a602a0182842.png)
线程生命周期
![](https://static001.geekbang.org/infoq/84/8472261b04a4cd52519bc9d70687bd72.png)
GC 线程并行执行的流程
![](https://static001.geekbang.org/infoq/66/66f9358dd5b4538e80454b5e64395dc5.png)
并发 GC 安全点
![](https://static001.geekbang.org/infoq/73/73d6bfc4d121c2173ad0b13715d2f1bf.png)
HotSpotVM 的执行流程
![](https://static001.geekbang.org/infoq/59/5923a69b5ccfc2af1929a40c2b778d3b.png)
JT 编译器的写屏障
![](https://static001.geekbang.org/infoq/73/73310073ee1002315d5fe9e2312eb559.png)
【有需要的可以-->点击这里即可获取我的资料笔记<--- 即可】
评论