Java虚拟机精讲PDF电子书下载
- 电子书积分:11 积分如何计算积分?
- 作 者:高翔龙编著
- 出 版 社:北京:电子工业出版社
- 出版年份:2015
- ISBN:9787121257056
- 页数:268 页
第1章 Java体系结构 1
1.1 认识Java 1
1.1.1 与生俱来的优点 2
1.1.2 语法结构和对象模型 4
1.1.3 历史版本追溯 5
1.2 Java重要概念 7
1.2.1 Java编程语言 7
1.2.2 字节码 7
1.2.3 Java API 8
1.2.4 Java虚拟机 8
1.3 安装与配置Java运行环境 10
1.3.1 Windows环境下的安装与配置 10
1.3.2 Linux环境下的安装与配置 11
1.3.3 编写Java程序 12
1.3.4 编译与运行 13
1.3.5 关键字与标示符 13
1.4 Java技术的新特性 14
1.4.1 Java模块化与OSGi技术 14
1.4.2 语言无关性 15
1.4.3 使用Fork/Join框架实现多核并行 16
1.4.4 丰富的语法特性 17
1.4.5 过渡到64位虚拟机 18
1.5 实战:玩转OpenJDK 19
1.5.1 JDK与OpenJDK的关系 19
1.5.2 基于OpenJDK深度定制的淘宝JVM(TaobaoVM) 20
1.5.3 下载OpenJDK源代码 22
1.5.4 构建编译环境 22
1.5.5 执行整个OpenJDK的编译 23
1.5.6 执行单独HotSpot的编译 26
1.5.7 导致编译失败的一些疑难杂症 29
1.5.8 使用GDB工具DebugHotSpot 30
1.6 本章小结 36
第2章 字节码的编译原理 37
2.1 javac编译器简介 37
2.1.1 javac与Eclipse Compiler forJava编译器 38
2.1.2 javac的使用与标准选项配置 39
2.1.3 编译原理 40
2.1.4 下载javac编译器源码 41
2.1.5 调用compile()方法执行编译 41
2.2 词法解析步骤 43
2.2.1 Token序列 45
2.2.2 源码字符集合与Token之间的对应关系 47
2.2.3 调用key()方法获取指定Token 48
2.2.4 调用nextToken()方法计算Token的获取规则 48
2.2.5 调用parseCompilationUnit()方法执行词法解析 49
2.3 语法解析步骤 51
2.3.1 调用qualident()方解析package语法节点 52
2.3.2 调用importDeclaration()方法解析import语法树 54
2.3.3 调用classDeclaration()方法解析class语法树 56
2.4 语义解析步骤 59
2.5 生成字节码 61
2.6 实战:使用javap工具分析字节码 62
2.7 实战:使用GCJ编译器将Java源码直接编译为本地机器指令 64
2.8 本章小结 66
第3章 字节码文件 67
3.1 字节码文件的内部组成结构 67
3.2 符号引用 73
3.2.1 类或者接口的全限定名 74
3.2.2 简单名称 74
3.2.3 描述符 74
3.3 常量池 76
3.3.1 CONSTANT_Utf8_info常量项 77
3.3.2 CONSTANT_Integer_info常量项 77
3.3.3 CONSTANT_Float_info常量项 78
3.3.4 CONSTANT_Long_info常量项 78
3.3.5 CONSTANT_Double_info常量项 79
3.3.6 CONSTANT_Class_info常量项 79
3.3.7 CONSTANT_String_info常量项 80
3.3.8 CONSTANT_Fieldref_info常量项 81
3.3.9 CONSTANT_Methodref_info常量项 81
3.3.10 CONSTANT_InterfaceMethodref_info常量项 82
3.3.11 CONSTANT_NameAndType_info常量项 82
3.3.12 CONSTANT_MethodHandle_info常量项 83
3.3.13 CONSTANT_MethodType_info常量项 84
3.3.14 CONSTANT_InvokeDynamic_info常量项 84
3.4 字段表 85
3.5 方法表 86
3.6 属性表 88
3.6.1 Code属性 89
3.6.2 ConstantValue属性 90
3.6.3 Exceptions属性 91
3.6.4 LineNumberTable属性 92
3.6.5 SourceFile属性 93
3.6.6 LocalVariableTable属性 93
3.6.7 InnerClasses属性 94
3.6.8 BootstrapMethods属性 95
3.7 本章小结 96
第4章 剖析HotSpot的Launcher 97
4.1 HotSpot的源码目录结构 97
4.2 Launcher简介 99
4.3 跟踪Launcher的执行过程 101
4.3.1 使用Launcher启动JVM 101
4.3.2 启动函数main() 102
4.3.3 在主线程中执行JavaMain()函数 106
4.3.4 调用JNI_CreateJavaVM()函数初始化HotSpot 114
4.3.5 调用LoadClass()函数获取Java启动类 115
4.3.6 调用GetStaticMethodId()函数获取Java启动方法 116
4.3.7 调用CallStaticVoidMethod()函数执行Java启动方法 116
4.3.8 调用jni_DestroyJavaVM函数销毁HotSpot 119
4.4 实战:在Launcher中添加自定义函数模块 120
4.5 本章小结 121
第5章 剖析HotSpot的初始化过程 122
5.1 HotSpot的构成模块 122
5.2 Prims模块 124
5.2.1 JNI子模块 124
5.2.2 JVM子模块 125
5.2.3 JVMTI子模块 128
5.2.4 Perf子模块 129
5.3 Runtime模块 129
5.3.1 Thread子模块 131
5.3.2 调用create_vm()函数完成HotSpot的最终初始化 131
5.4 跟踪HotSpot的初始化过程 140
5.4.1 调用init()和init_2()函数初始化os模块 141
5.4.2 调用vm_init_globals()函数初始化全局数据结构 144
5.4.3 调用init_globals()函数初始化全局模块 144
5.5 本章小结 146
第6章 内存分配与垃圾回收 147
6.1 JVM的运行时内存区结构 147
6.2 线程共享内存区 148
6.2.1 Java堆区 148
6.2.2 方法区 150
6.2.3 运行时常量池 150
6.3 线程私有内存区 150
6.3.1 PC寄存器 151
6.3.2 Java栈 151
6.3.3 本地方法栈 152
6.4 性能监控区 152
6.5 自动内存管理 152
6.5.1 内存分配原理 153
6.5.2 逃逸分析与栈上分配 157
6.5.3 对象内存布局与OOP-Klass模型 158
6.5.4 GC的作用 159
6.5.5 垃圾标记:根搜索算法 160
6.5.6 垃圾回收:分代收集算法 161
6.6 垃圾收集器 164
6.6.1 串行回收:Serial收集器 165
6.6.2 并行回收:ParNew收集器 166
6.6.3 程序吞吐量优先:Parallel收集器 166
6.6.4 低延迟:CMS(Concurrent-Mark-Sweep)收集器 167
6.6.5 区域化分代式:G1(Garbage-First)收集器 170
6.6.6 垃圾收集的相关选项配置 172
6.7 实战:GC日志分析 175
6.7.1 不同GC日志的展示形式 175
6.7.2 使用GCHisto工具分析离线日志 179
6.8 实战:分析dump文件 181
6.8.1 使用jmap工具生成dump文件 181
6.8.2 使用MAT(MemoryAnalyzerTool)工具分析dump文件 182
6.9 本章小结 184
第7章 类加载机制 185
7.1 类加载器 185
7.1.1 抽象类ClassLoader 187
7.1.2 双亲委派模型 188
7.1.3 自定义类加载器 191
7.1.4 定位ClassNotFoundException异常 193
7.1.5 定位NoClassDefFoundError异常 194
7.2 类的加载过程 195
7.2.1 加载字节码 198
7.2.2 验证阶段 199
7.2.3 准备阶段 200
7.2.4 解析阶段 201
7.2.5 初始化阶段 201
7.3 实战:字节码文件的加密与解密 204
7.4 本章小结 208
第8章 剖析HotSpot的架构模型与执行引擎 209
8.1 栈帧的组成结构 209
8.1.1 局部变量表 211
8.1.2 操作数栈 212
8.1.3 动态链接 214
8.1.4 方法返回值 216
8.2 HotSpot中执行引擎的架构模型 216
8.2.1 本地机器指令 217
8.2.2 寄存器架构与栈式架构之间的区别 218
8.2.3 基于栈式架构的设计 221
8.2.4 调用call_stub()函数执行Java方法 222
8.2.5 栈顶缓存(Top-of-Stack Cashing)技术 225
8.2.6 实战:跟踪字节码解释器的执行步骤 227
8.3 解释器与JIT编译器 230
8.3.1 查阅HotSpot的运行时执行模式 231
8.3.2 解释器的工作机制与构成模块 232
8.3.3 JIT编译器的工作机制与构成模块 234
8.3.4 分层编译策略 235
8.3.5 热点探测功能 236
8.4 本章小结 239
附录A Java7新增语法特性 241
A.1 try-with-resources语句 241
A.2 泛型的“◇”类型推断运算符 245
A.3 声明二进制字面值 247
A.4 字面值下画线支持 248
A.5 switch表达式支持String类型 250
A.6 mutil-catch特性 251
A.7 NIO2.0文件系统的改变 255
附录B 指令助记符 262
- 《MBA大师.2020年MBAMPAMPAcc管理类联考专用辅导教材 数学考点精讲》(中国)董璞 2019
- 《虚拟流域环境理论技术研究与应用》冶运涛蒋云钟梁犁丽曹引等编著 2019
- 《2020考研英语大趋势 历年真题完形+翻译+新题型精讲精练》商志 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《2019国家执业药师考试教材精讲 药学专业知识 2 第2版》何冰 2019
- 《国之重器出版工程 云化虚拟现实技术与应用》熊华平 2019
- 《外国文学名著精讲 1》汪汉利著 2019
- 《现代汉语空间位置关系虚拟运动研究》姚京晶著 2018
- 《虚拟现实与人工智能技术的综合应用》潘晓霞著 2018
- 《手把手教你吉他弹唱3汪峰经典作品精讲》王一 2013
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《流体力学》张扬军,彭杰,诸葛伟林编著 2019
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017