引言篇
第1章 JVM与Java体系结构 2
1.1 为什么要学习JVM 2
1.2 Java及JVM的简介 2
1.2.1 Java:跨平台的语言 2
1.2.2 JVM:跨语言的平台 4
1.3 Java发展的重大事件 6
1.4 Open JDK和Oracle JDK 7
1.5 虚拟机与JVM 7
1.5.1 虚拟机 7
1.5.2 JVM 8
1.6 JVM的整体结构 8
1.7 Java代码执行流程 9
1.8 JVM的架构模型 9
1.9 JVM的生命周期 13
1.10 JVM的发展历程 14
1.10.1 Sun Classic VM 14
1.10.2 Exact VM 14
1.10.3 HotSpot VM 14
1.10.4 BEA的JRockit 15
1.10.5 IBM的J9 15
1.10.6 KVM和CDC/CLDC HotSpot 15
1.10.7 Azul VM 16
1.10.8 Liquid VM 16
1.10.9 Apache Harmony 16
1.10.10 Microsoft JVM 16
1.10.11 Taobao JVM 17
1.10.12 Dalvik VM/ART VM 17
1.10.13 Graal VM 17
1.10.14 其他JVM 18
1.11 本章小结 18
第1篇 运行时数据区篇
第2章 运行时数据区及线程概述 20
2.1 运行时数据区概述 20
2.2 线程 21
2.3 本章小结 21
第3章 程序计数器 22
3.1 程序计数器介绍 22
3.2 程序计数器举例说明 22
3.3 程序计数器常见问题 23
3.4 本章小结 23
第4章 虚拟机栈 24
4.1 虚拟机栈概述 24
4.2 栈的存储单位 28
4.3 局部变量表 31
4.3.1 局部变量表简介 31
4.3.2 Slot 32
4.4 操作数栈 34
4.5 栈顶缓存技术 37
4.6 动态链接 37
4.7 方法的调用 38
4.7.1 方法调用的分类 38
4.7.2 虚方法与非虚方法 40
4.7.3 关于invokedynamic指令 43
4.7.4 方法重写的本质 44
4.7.5 虚方法表 44
4.8 方法返回地址 47
4.9 本章小结 51
第5章 本地方法接口 52
5.1 本地方法接口概述 52
5.2 本章小结 53
第6章 本地方法栈 54
第7章 堆 56
第8章 方法区 84
第9章 对象的实例化内存布局与访问定位112
第10章 直接内存 119
第11章 执行引擎 127
第12章 字符串常量池 138
第2篇 垃圾收集篇
第13章 垃圾收集概述 160
第14章 垃圾收集相关算法 163
第15章 垃圾收集相关概念 183
第16章 垃圾收集器 203
第3篇 字节码与类的加载篇
第17章 class文件结构 226
第18章 字节码指令集与解析 268
第19章 类的加载过程详解 318
第20章 类加载器 338
第4篇 性能监控与调优篇
第21章 命令行工具 368
第22章 JVM监控及诊断工具 396
第23章 JVM运行时参数 475
第24章 GC日志分析 487
第25章 OOM分类及解决方案506
第26章 性能优化案例 517