当前位置:首页 > 其他书籍
深入浅出  Java虚拟机设计与实现
深入浅出  Java虚拟机设计与实现

深入浅出 Java虚拟机设计与实现PDF电子书下载

其他书籍

  • 电子书积分:20 积分如何计算积分?
  • 作 者:华保健著
  • 出 版 社:
  • 出版年份:2020
  • ISBN:
  • 页数:0 页
图书介绍:
《深入浅出 Java虚拟机设计与实现》目录

第1章 虚拟机架构 1

1.1 Java与Java虚拟机 1

1.1.1设计背景 1

1.1.2 Java技术栈的组成要素 2

1.1.3 Java字节码 3

1.2 Java虚拟机架构 5

1.3实例:J语言及其编译 7

1.3.1 J语言语法 7

1.3.2 栈式计算机 13

1.3.3 J字节码 17

1.3.4 J语言编译到J字节码 19

1.4实例:J虚拟机 23

1.4.1字节码加载子系统 23

1.4.2字节码验证器 24

1.4.3解释执行引擎 27

第2章 类加载器 30

2.1实例:Java的类加载 30

2.2类的二进制定义 32

2.2.1常量池 34

2.2.2接口 36

2.2.3字段 37

2.2.4方法 37

2.2.5属性 38

2.3方法区 41

2.3.1代码区 41

2.3.2运行时常量池 45

2.3.3类辅助数据结构 47

2.4类装载 49

2.4.1递归下降装载 50

2.4.2接口的装载 57

2.4.3数组的装载 57

2.4.4基本类的装载 59

2.5验证 61

2.5.1为什么要进行验证 61

2.5.2验证的目标 63

2.5.3实例:验证规则 63

2.5.4结构化约束 68

2.5.5类型推导 69

2.6准备 75

2.6.1静态字段的准备 76

2.6.2非静态字段的准备 77

2.6.3虚方法表 80

2.7解析 86

2.7.1实例:类的解析 86

2.7.2类的解析 88

2.7.3字段的解析 89

2.7.4方法的解析 91

2.7.5 接口方法的解析 98

2.7.6字符串常量的解析 100

2.7.7常量池其他表项的解析 101

2.8 初始化 101

2.8.1类初始化方法 102

2.8.2类初始化算法 103

2.9类加载各阶段的执行顺序 110

2.9.1急切策略和惰性策略 111

2.9.2类解析和类初始化的耦合性 113

2.10自定义类加载器 114

2.10.1独立加载模型 116

2.10.2双亲委派模型 118

2.11实例:类加载器的典型应用 123

2.11.1动态代理 124

2.11.2热替换 133

第3章 执行引擎 139

3.1栈帧结构 139

3.2调用规范 140

3.3执行引擎架构 141

3.3.1序列式架构 142

3.3.2跳转表架构 143

3.4执行引擎实现 145

3.4.1常量加载指令 145

3.4.2数据加载指令 147

3.4.3数据存储指令 149

3.4.4栈操作指令 151

3.4.5数学运算指令 152

3.4.6数值转换指令 155

3.4.7比较运算指令 157

3.4.8控制转移指令 159

3.4.9引用指令 176

3.4.10扩展与虚拟机保留指令 185

3.5本地方法执行引擎 187

3.6 可重入方法 194

3.7汇编模板 198

第4章 本地方法接口 201

4.1实例:Java本地方法 201

4.2方法绑定 202

4.2.1本地方法的数据结构 203

4.2.2动态库加载 205

4.2.3动态绑定 206

4.2.4静态绑定 209

4.3本地方法拦截 213

4.3.1拦截机制 213

4.3.2 耦合性 216

4.3.3反射 217

4.4本地方法回调Java方法 218

4.4.1 JNI回调函数 220

4.4.2本地方法栈帧 223

第5章 异常处理 226

5.1实例:Java异常处理 226

5.2异常栈 228

5.3异常表 236

5.4栈回滚 243

5.5本地方法异常 247

5.6其他问题 250

5.6.1隐式异常 250

5.6.2异常处理与多线程 253

5.6.3执行效率 254

第6章 堆和垃圾收集 255

6.1实例:对象与垃圾 255

6.1.1语法垃圾与语义垃圾 256

6.1.2内存泄漏 257

6.2堆 258

6.2.1堆数据结构 258

6.2.2堆分配接口 259

6.3存储布局 259

6.3.1对象的存储布局 259

6.3.2类的存储布局 263

6.3.3数组的存储布局 264

6.4垃圾收集 265

6.4.1根节点 266

6.4.2复制收集 270

6.4.3终结 276

6.4.4垃圾收集的触发 280

6.5本地方法和垃圾收集 281

6.5.1局部和全局引用 281

6.5.2对象引用相关JNI函数的实现 283

6.6其他问题 285

6.6.1多线程与垃圾收集 285

6.6.2无中断垃圾收集 289

6.6.3类型标记 291

第7章 多线程 293

7.1线程语义模型 293

7.1.1线程方法 293

7.1.2线程状态 294

7.1.3实例:线程中断 297

7.2管程 303

7.2.1管程数据结构 303

7.2.2接口与实现 307

7.2.3管程指令 314

7.2.4管程与对象 316

7.3多线程的实现 318

7.3.1线程数据结构 319

7.3.2创建线程对象 321

7.3.3启动 323

7.3.4让出 325

7.3.5睡眠 325

7.3.6 中断 327

7.3.7停止、挂起和继续 335

7.3.8原子性和可见性 337

7.3.9 线程与信号 338

7.4多线程与虚拟机其他子系统的交互 342

7.4.1全局数据结构与锁 343

7.4.2类初始化 345

7.4.3垃圾收集 350

第8章 调试 357

8.1调试器架构 357

8.1.1客户端-服务器架构 358

8.1.2 JDWP调试协议 359

8.1.3数据类型 360

8.1.4实例:断点 361

8.2调试代理 364

8.2.1通信模块 365

8.2.2执行引擎模块 366

8.2.3对象管理模块 370

8.2.4事件处理模块 371

8.3实例:jdb调试器 376

8.4调试的其他问题 384

8.4.1薛定谔困境 384

8.4.2调试与安全性 386

8.4.3实例:JVM渗透 387

返回顶部