更新时间:2024-12-27 20:17:46
封面
版权信息
作者简介
内容简介
前言
引言篇
第1章 JVM与Java体系结构
1.1 为什么要学习JVM
1.2 Java及JVM的简介
1.2.1 Java:跨平台的语言
1.2.2 JVM:跨语言的平台
1.3 Java发展的重大事件
1.4 Open JDK和Oracle JDK
1.5 虚拟机与JVM
1.5.1 虚拟机
1.5.2 JVM
1.6 JVM的整体结构
1.7 Java代码执行流程
1.8 JVM的架构模型
1.9 JVM的生命周期
1.10 JVM的发展历程
1.10.1 Sun Classic VM
1.10.2 Exact VM
1.10.3 HotSpot VM
1.10.4 BEA的JRockit
1.10.5 IBM的J9
1.10.6 KVM和CDC/CLDC HotSpot
1.10.7 Azul VM
1.10.8 Liquid VM
1.10.9 Apache Harmony
1.10.10 Microsoft JVM
1.10.11 Taobao JVM
1.10.12 Dalvik VM/ART VM
1.10.13 Graal VM
1.10.14 其他JVM
1.11 本章小结
第1篇 运行时数据区篇
第2章 运行时数据区及线程概述
2.1 运行时数据区概述
2.2 线程
2.3 本章小结
第3章 程序计数器
3.1 程序计数器介绍
3.2 程序计数器举例说明
3.3 程序计数器常见问题
3.4 本章小结
第4章 虚拟机栈
4.1 虚拟机栈概述
4.2 栈的存储单位
4.3 局部变量表
4.3.1 局部变量表简介
4.3.2 Slot
4.4 操作数栈
4.5 栈顶缓存技术
4.6 动态链接
4.7 方法的调用
4.7.1 方法调用的分类
4.7.2 虚方法与非虚方法
4.7.3 关于invokedynamic指令
4.7.4 方法重写的本质
4.7.5 虚方法表
4.8 方法返回地址
4.9 本章小结
第5章 本地方法接口
5.1 本地方法接口概述
5.2 本章小结
第6章 本地方法栈
6.1 本地方法栈概述
6.2 本章小结
第7章 堆
7.1 堆的核心概述
7.1.1 JVM实例与堆内存的对应关系
7.1.2 堆与栈的关系
7.1.3 JVM堆空间划分
7.2 设置堆内存大小与内存溢出
7.2.1 设置堆内存大小
7.2.2 内存溢出案例
7.3 新生代与老年代
7.4 图解对象分配过程
7.5 Minor GC、Major GC、Full GC
7.5.1 GC的分类
7.5.2 分代式GC策略的触发条件
7.5.3 GC举例
7.6 堆空间分代思想
7.7 堆中对象的分配策略
7.8 为对象分配内存:TLAB
7.9 堆空间的参数设置小结
7.10 堆是否为分配对象存储的唯一选择
7.10.1 对象不一定存储在堆中
7.10.2 逃逸分析概述
7.10.3 逃逸分析优化结果
7.10.4 逃逸分析之栈上分配
7.10.5 逃逸分析之同步省略
7.10.6 逃逸分析之标量替换
7.10.7 逃逸分析小结:逃逸分析并不成熟
7.11 本章小结
第8章 方法区
8.1 栈、堆、方法区的交互关系
8.2 方法区的理解
8.2.1 方法区的官方描述