更新时间:2022-08-29 15:14:01
封面
版权信息
作者简介
前言
第一部分 Java虚拟机和垃圾回收基础知识
第1章 Java代码执行过程介绍
1.1 代码执行过程概述
1.1.1 编译执行
1.1.2 解释执行
1.1.3 混合执行
1.2 从C代码执行过程看编译器和操作系统协同工作
1.2.1 从源代码到目标代码
1.2.2 操作系统如何执行目标代码
1.3 从C++代码的执行过程看编译器支持面向对象语言
1.3.1 封装支持
1.3.2 继承支持
1.3.3 多态支持
1.4 Java代码执行过程简介
1.4.1 Java代码到字节码
1.4.2 JVM加载字节码
1.4.3 解释执行
1.4.4 编译执行
1.5 内存管理
1.6 线程管理
1.7 扩展阅读:JIT概述
第2章 JVM中垃圾回收相关的基本知识
2.1 GC算法分类
2.2 GC涉及的对象表示
2.3 GC算法概述
2.3.1 复制算法
2.3.2 标记清除算法
2.3.3 标记压缩算法
2.3.4 分代回收
2.4 GC的根
2.4.1 强根
2.4.2 Java引用引入的弱根
2.4.3 JVM优化实现引入的弱根
2.4.4 JVM中根的构成
2.5 安全点
2.5.1 解释线程进入安全点
2.5.2 编译线程进入安全点
2.5.3 本地线程进入安全点
2.5.4 JVM内部并发线程进入安全点
2.5.5 安全点小结
2.6 扩展阅读:垃圾回收器请求内存设计
第二部分 JVM垃圾回收器详解
第3章 串行回收
3.1 分代堆内存管理概述
3.1.1 堆设计
3.1.2 分代边界
3.1.3 回收设计思路
3.2 新生代内存管理
3.2.1 新生代内存分配
3.2.2 垃圾回收的触发机制
3.2.3 适用于单线程的复制回收算法
3.2.4 适用于分代的复制回收算法
3.2.5 引用集管理
3.3 老生代内存管理
3.3.1 堆空间回收的触发
3.3.2 堆空间回收算法过程介绍
3.3.3 适用于分代的标记压缩算法
3.3.4 标记-压缩的优化
3.4 扩展阅读:不同的复制算法比较及对程序员的启迪
第4章 并发标记清除回收
4.1 内存管理
4.2 并行的新生代回收
4.2.1 一般根集合的并行处理
4.2.2 老生代到新生代引用的并行处理
4.2.3 卡表的竞争操作介绍
4.2.4 并行复制算法卡表设计
4.3 并发回收的难点
4.3.1 三色标记法
4.3.2 难点示意图
4.3.3 读屏障处理
4.3.4 写屏障之增量标记
4.3.5 写屏障之SATB标记
4.4 并发的老生代回收
4.4.1 内存管理
4.4.2 标记清除算法概述
4.4.3 并发算法触发时机
4.4.4 并发标记清除之初始标记
4.4.5 并发标记清除之并发标记
4.4.6 并发标记清除之预清理
4.4.7 并发标记清除之可终止预清理
4.4.8 并发标记清除之再标记
4.4.9 并发标记清除之清除
4.4.10 并发标记清除之内存空间调整
4.4.11 并发标记清除之复位
4.4.12 并发算法难点
4.5 Full GC
4.6 扩展阅读:标记栈溢出的各种处理方法
4.6.1 重新标记法
4.6.2 全局列表法
4.6.3 逆指针法
4.7 扩展阅读:元数据内存管理
4.7.1 内存管理
4.7.2 分配
4.7.3 回收
4.7.4 元数据管理的优化
第5章 并行回收