Android Dalvik虚拟机结构及机制剖析——第2卷 Dalvik虚拟机各模块机制分析为第2卷,在第1卷的基础上,采有情景分析的方式对Android Dalvik虚拟机的源代码进行了有针对性的分析,围绕类加载、解释器、即时编译、本地方法调用、内存管理及反射机制等功能模块展开分析,主要帮助读者从微观上更深入地理解Dalvik虚拟机中各功能模块的实现原理及运行机制。
第2卷共6章,第1章介绍类加载机制,包括其整体的工作流程和机制,详细讲解了其中的三个阶段,并以一个实例验证了源码分析的结果;第2章介绍了Dalvik虚拟机中至关重要的内存管理机制,详细讲解了其实现的两种算法;第3章分析了JNI模块的实现原理,在分析源码的基础上,细致入微地介绍了为何用JNI编程会提升程序的执行效率;第4章以反射机制的一个代码示例开始,介绍了其涉及的API,并从宏观到微观详细介绍了反射机制;第5章介绍了实现解释器的两种不同的技术,比较了Fast解释器和Portable解释器的不同及各自的优劣势,第6章从介绍最近在解释器中非常火的JIT(即时编译)开始,到JIT的所谓的前端分析,再到JIT的后端代码生成,为《Android Dalvik虚拟机结构及机制剖析——第2卷 Dalvik虚拟机各模块机制分析》画上一个圆满的句号。
通过阅读《Android Dalvik虚拟机结构及机制剖析——第2卷 Dalvik虚拟机各模块机制分析》,读者可以了解Dalvik虚拟机在Android应用程序运行过程中所扮演的重要角色及其不可替代的价值。通过阅读本系列丛书,读者可以对Android应用程序的执行过程有更加细致的了解,可以帮助读者优化自己编写的应用程序,更加合理地设计应用程序结构,有效提高应用程序的运行速度。
Android Dalvik虚拟机结构及机制剖析——第2卷 Dalvik虚拟机各模块机制分析 目录:
第1章类加载模块的原理及实现1
1.1类加载机制概述1
1.2类加载机制整体工作流程介绍2
1.3Dex文件的优化与验证3
1.3.1Dex文件优化验证的原理与实现3
1.3.2Odex文件结构分析4
1.3.3函数执行流程6
1.4Dex文件的解析12
1.4.1DexFile数据结构简析12
1.4.2Dex文件解析流程概述13
1.4.3函数执行流程14
1.5运行时环境数据加载20
1.5.1ClassObject数据结构简析21
1.5.2类加载整体流程概述23
1.5.3函数执行流程24
1.6类加载机制与解释器交互示例31
小结33
第2章内存管理的原理及实现34
2.1内存管理初探34
2.2内存分配过程分析36
2.2.1关键数据结构36
2.2.2关键函数37
2.2.3内存分配流程44
2.3垃圾回收过程分析46
2.3.1垃圾收集算法46
2.3.2关键数据结构48
2.3.3关键函数49
2.3.4垃圾回收流程53
小结54
第3章JNI模块的原理及实现55
3.1何时使用JNI55
3.2JNI编程示例56
3.2.1加载动态链接库56
3.2.2声明本地函数56
3.2.3实现本地函数56
3.2.4实现JNI_Onload函数59
3.3JNI机制环境的建立60
3.3.1AndroidRuntime类的start方法61
3.3.2JNI_CreateJavaVM()函数63
3.4Java调用C执行流程分析67
3.4.1解释器栈帧结构体67
3.4.2关键函数69
3.4.3Java调用C执行流程76
3.5C调用Java执行流程分析78
3.5.1本地调用接口函数结构体78
3.5.2关键函数79
3.5.3C调用Java执行流程85
小结87
第4章反射机制模块的原理及实现88
4.1概述88
4.2反射机制实现代码示例89
4.3反射机制API分析92
4.3.1反射机制API分析概述92
4.3.2代理模式API分析94
4.3.3元数据注释机制API分析94
4.4反射机制的“三层”实现体系95
4.4.1类反射机制在Dalvik虚拟机内部的实现95
4.4.2三层结构实例展示96
4.5反射机制实现分析97
4.5.1Class类详细分析97
4.5.2Constructor类详细分析101
4.5.3Method类详细分析102
4.5.4Field类详细分析102
4.5.5反射机制对Proxy类和Annotation类功能上的支持104
4.5.6核心函数详细分析104
4.6模块内部函数调用关系113
4.6.1反射机制本地方法接口对反射机制实际执行函数的调用113
4.6.2反射机制实际执行函数内部对各个功能点函数的调用113
小结115
第5章解释器模块的原理及实现116
5.1概述116
5.2解释器执行原理116
5.3Portable解释器实现分析118
5.3.1字节码解析原理118
5.3.2字节码指令解释流程121
5.3.3一个解释程序的例子123
5.4Fast解释器C实现分析126
5.4.1字节码解析原理126
5.4.2字节码指令解释流程127
5.5Fast解释器汇编实现分析129
5.5.1字节码解析原理129
5.5.2字节码解析流程131
5.5.3一个解释程序的例子136
5.6解释器的模块化设计137
小结140
第6章即时编译模块的原理及实现141
6.1概述141
6.2JIT分类142
6.2.1Methodbased JIT142
6.2.2Tracebased JIT142
6.3整体框架分析143
6.4前端功能及原理分析149
6.4.1构造基本块150
6.4.2确定控制流关系153
6.4.3识别及筛选循环155
6.4.4SSA形式转换158
6.5后端功能及原理分析160
6.5.1MIR转换为LIR161
6.5.2LIR转换为机器码163
小结164