图书介绍

Java虚拟机精讲【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

Java虚拟机精讲
  • 高翔龙编著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121257056
  • 出版时间:2015
  • 标注页数:268页
  • 文件大小:40MB
  • 文件页数:282页
  • 主题词:JAVA语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Java虚拟机精讲PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 Java体系结构1

1.1 认识Java1

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 API8

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 实战:玩转OpenJDK19

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工具DebugHotSpot30

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()方法获取指定Token48

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的Launcher97

4.1 HotSpot的源码目录结构97

4.2 Launcher简介99

4.3 跟踪Launcher的执行过程101

4.3.1 使用Launcher启动JVM101

4.3.2 启动函数main()102

4.3.3 在主线程中执行JavaMain()函数106

4.3.4 调用JNI_CreateJavaVM()函数初始化HotSpot114

4.3.5 调用LoadClass()函数获取Java启动类115

4.3.6 调用GetStaticMethodId()函数获取Java启动方法116

4.3.7 调用CallStaticVoidMethod()函数执行Java启动方法116

4.3.8 调用jni_DestroyJavaVM函数销毁HotSpot119

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 抽象类ClassLoader187

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

热门推荐