图书介绍
揭秘Java虚拟机 JVM设计原理与实现PDF|Epub|txt|kindle电子书版本网盘下载
- 封亚飞著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121315411
- 出版时间:2017
- 标注页数:662页
- 文件大小:68MB
- 文件页数:677页
- 主题词:JAVA语言-程序设计
PDF下载
下载说明
揭秘Java虚拟机 JVM设计原理与实现PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 Java虚拟机概述1
1.1 从机器语言到Java——詹爷,你好1
1.2 兼容的选择:一场生产力的革命6
1.3 中间语言翻译10
1.3.1 从中间语言翻译到机器码11
1.3.2 通过C程序翻译11
1.3.3 直接翻译为机器码13
1.3.4 本地编译16
1.4 神奇的指令18
1.4.1 常见汇编指令20
1.4.2 JVM指令21
1.5 本章总结24
第2章 Java执行引擎工作原理:方法调用25
2.1 方法调用26
2.1.1 真实的机器调用26
2.1.2 C语言函数调用41
2.2 JVM的函数调用机制47
2.3 函数指针53
2.4 CallStub函数指针定义60
2.5 _call_stub_entry例程72
2.6 本章总结115
第3章 Java数据结构与面向对象117
3.1 从Java算法到数据结构118
3.2 数据类型简史122
3.3 Java数据结构之偶然性129
3.4 Java类型识别132
3.4.1 class字节码概述133
3.4.2 魔数与JVM内部的int类型136
3.4.3 常量池与JVM内部对象模型137
3.5 大端与小端143
3.5.1 大端和小端的概念146
3.5.2 大小端产生的本质原因148
3.5.3 大小端验证149
3.5.4 大端和小端产生的场景151
3.5.5 如何解决字节序反转154
3.5.6 大小端问题的避免156
3.5.7 JVM对字节码文件的大小端处理156
3.6 本章总结159
第4章 Java字节码实战161
4.1 字节码格式初探161
4.1.1 准备测试用例162
4.1.2 使用javap命令分析字节码文件162
4.1.3 查看字节码二进制165
4.2 魔数与版本166
4.2.1 魔数168
4.2.2 版本号168
4.3 常量池169
4.3.1 常量池的基本结构169
4.3.2 JVM所定义的11种常量170
4.3.3 常量池元素的复合结构170
4.3.4 常量池的结束位置172
4.3.5 常量池元素总数量172
4.3.6 第一个常量池元素173
4.3.7 第二个常量池元素174
4.3.8 父类常量174
4.3.9 变量型常量池元素175
4.4 访问标识与继承信息177
4.4.1 access_flags177
4.4.2 this_class178
4.4.3 super_class179
4.4.4 interface179
4.5 字段信息180
4.5.1 fields_count180
4.5.2 field_info fields[fields_count]181
4.6 方法信息185
4.6.1 methods_count185
4.6.2 method_info methods[methods_count]185
4.7 本章回顾205
第5章 常量池解析206
5.1 常量池内存分配208
5.1.1 常量池内存分配总体链路209
5.1.2 内存分配215
5.1.3 初始化内存223
5.2 oop-klass模型224
5.2.1 两模型三维度225
5.2.2 体系总览227
5.2.3 oop体系229
5.2.4 klass体系231
5.2.5 handle体系234
5.2.6 oop、klass、handle的相互转换239
5.3 常量池klass模型(1)244
5.3.1 klassKlass实例构建总链路246
5.3.2 为klassOop申请内存249
5.3.3 klassOop内存清零253
5.3.4 初始化mark253
5.3.5 初始化klassOop._metadata258
5.3.6 初始化klass259
5.3.7 自指260
5.4 常量池klass模型(2)261
5.4.1 constantPoolKlass模型构建261
5.4.2 constantPoolOop与klass264
5.4.3 klassKlass终结符267
5.5 常量池解析267
5.5.1 constantPoolOop域初始化268
5.5.2 初始化tag269
5.5.3 解析常量池元素271
5.6 本章总结279
第6章 类变量解析280
6.1 类变量解析281
6.2 偏移量285
6.2.1 静态变量偏移量285
6.2.2 非静态变量偏移量287
6.2.3 Java字段内存分配总结312
6.3 从源码看字段继承319
6.3.1 字段重排与补白319
6.3.2 private字段可被继承吗325
6.3.3 使用HSDB验证字段分配与继承329
6.3.4 引用类型变量内存分配338
6.4 本章总结342
第7章 Java栈帧344
7.1 entry_point例程生成345
7.2 局部变量表创建352
7.2.1 constMethod的内存布局352
7.2.2 局部变量表空间计算356
7.2.3 初始化局部变量区359
7.3 堆栈与栈帧368
7.3.1 栈帧是什么368
7.3.2 硬件对堆栈的支持387
7.3.3 栈帧开辟与回收390
7.3.4 堆栈大小与多线程391
7.4 JVM的栈帧396
7.4.1 JVM栈帧与大小确定396
7.4.2 栈帧创建399
7.4.3 局部变量表421
7.5 栈帧深度与slot复用433
7.6 最大操作数栈与操作栈复用436
7.7 本章总结439
第8章 类方法解析440
8.1 方法签名解析与校验445
8.2 方法属性解析447
8.2.1 code属性解析447
8.2.2 LVT&LVTT449
8.3 创建methodOop455
8.4 Java方法属性复制459
8.5 <clinit>与<init>461
8.6 查看运行时字节码指令482
8.7 vtable489
8.7.1 多态489
8.7.2 C++中的多态与vtable491
8.7.3 Java中的多态实现机制493
8.7.4 vtable与invokevirtual指令500
8.7.5 HSDB查看运行时vtable502
8.7.6 miranda方法505
8.7.7 vtable特点总结508
8.7.8 vtable机制逻辑验证509
8.8 本章总结511
第9章 执行引擎513
9.1 执行引擎概述514
9.2 取指516
9.2.1 指令长度519
9.2.2 JVM的两级取指机制527
9.2.3 取指指令放在哪532
9.2.4 程序计数器在哪里534
9.3 译码535
9.3.1 模板表535
9.3.2 汇编器540
9.3.3 汇编549
9.4 栈项缓存558
9.5 栈式指令集565
9.6 操作数栈在哪里576
9.7 栈帧重叠581
9.8 entry_point例程机器指令586
9.9 执行引擎实战588
9.9.1 一个简单的例子588
9.9.2 字节码运行过程分析590
9.10 字节码指令实现597
9.10.1 iconst_3598
9.10.2 istore_0599
9.10.3 iadd600
9.11 本章总结601
第10章 类的生命周期602
10.1 类的生命周期概述602
10.2 类加载605
10.2.1 类加载——镜像类与静态字段611
10.2.2 Java主类加载机制617
10.2.3 类加载器的加载机制622
10.2.4 反射加载机制623
10.2.5 impor与new指令624
10.3 类的初始化625
10.4 类加载器628
10.4.1 类加载器的定义628
10.4.2 系统类加载器与扩展类加载器创建634
10.4.3 双亲委派机制与破坏636
10.4.4 预加载638
10.4.5 引导类加载640
10.4.6 加载、链接与延迟加载641
10.4.7 父加载器645
10.4.8 加载器与类型转换648
10.5 类实例分配649
10.5.1 栈上分配与逃逸分析652
10.5.2 TLAB655
10.5.3 指针碰撞与eden区分配657
10.5.4 清零658
10.5.5 偏向锁658
10.5.6 压栈与取指659
10.6 本章总结661