Java 垃圾回收
我们都知道 Java 在运行时内存分为了五个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。其中程序计数器、虚拟机栈、本地方法栈所占用的内存是不需要垃圾收集的,这三个区域的内存随着线程生,随着线程死,我们需要关注的其实只有堆和方法区这两块内存的垃圾收集。这时候就需要用到 GC 技术了。
对于垃圾回收概念,它一出现常常伴随着一连串的问题:
-
GC 具体做了什么?
-
哪些内存需要回收?
-
什么时候回收?
-
怎么回收?
-
垃圾回收算法 &垃圾回收器有哪些?
本书是对“GC书”的补充。只要读过“GC书”,就应该能理解本书的内容。不过即使没有读过,只要具备一些GC的基础知识,阅读本书应该也不成问题。具体来说,需要事先掌握标记—清除GC、复制GC和增量GC等的基础算法。关于这些基础知识,请参考“GC书”。
算法篇
目录一览
内容一览
-
G1GC 堆结构
-
并发标记
-
GC 预测转移时间
-
G1GC 新生代区域
-
GC 执行的时机
实战篇
目录一览
内容一览
-
准备工作
-
对象管理功能
-
G1GC 堆结构
-
内存分配流程
-
线程生命周期
-
GC 线程并行执行的流程
-
并发 GC 安全点
-
HotSpotVM 的执行流程
-
JT 编译器的写屏障