作品简介

本书是笔者“深入理解Android”系列的第四本。本书将关注Android系统中至关重要的部分——Java虚拟机ART。随着Android设备的大规模普及,ART虚拟机已经成为当今使用最为广泛的JVM之一。所以,对ART虚拟机进行研究有着非同寻常的意义。本书的出现在一定程度上填补了这方面的空白。

本书核心内容:(1).class、.dex和ELF文件格式介绍、阅读源码所需的C++11基础知识。(2)以编译原理为基础,介绍ART虚拟机编译相关的知识。(3)以ARTRuntime对象的创建为主线,介绍主要的模块及一些关键类、数据结构等知识。(4)ART虚拟机中类的解析、加载、链接、初始化等。(5)dex字节码转机器码的核心进程dex2oat以及.oat和.art文件格式。(6)ART虚拟机的解释执行、JIT和JNI等知识。(7)Java线程执行相关的知识,包括线程暂停和恢复运行、synchronized、Objectwait/notify的实现、volatile变量的读写处理等。(8)内存分配和释放相关的知识。(9)和垃圾回收有关的基础知识,相关垃圾回收器的代码实现、JavaReference的处理等。

邓凡平著。

作品目录

  • 前言
  • 第1章 本书必读
  • 1.1 概述
  • 1.2 准备环境和工具
  • 1.3 本书的内容
  • 1.4 本书资源下载说明
  • 第2章 深入理解Class文件格式
  • 2.1 Class文件格式总览
  • 2.2 常量池及相关内容
  • 2.3 field_info和method_info
  • 2.4 access_flags介绍
  • 2.5 属性介绍
  • 2.6 Java指令码介绍
  • 2.7 学习路线推荐
  • 2.8 参考资料
  • 第3章 深入理解Dex文件格式
  • 3.1 Dex文件格式总览
  • 3.2 认识Dex文件
  • 3.3 Dex指令码介绍
  • 3.4 学习路线推荐
  • 3.5 参考资料
  • 第4章 深入理解ELF文件格式
  • 4.1 概述
  • 4.2 ELF文件格式介绍
  • 4.3 学习路线推荐
  • 4.4 参考资料
  • 第5章 认识C++11
  • 5.1 数据类型
  • 5.2 C++源码构成及编译
  • 5.3 Class介绍
  • 5.4 操作符重载
  • 5.5 函数模板与类模板
  • 5.6 lambda表达式
  • 5.7 STL介绍
  • 5.8 其他常用知识
  • 5.9 参考资料
  • 第6章 编译dex字节码为机器码
  • 6.1 编译器全貌介绍
  • 6.2 编译器前端介绍
  • 6.3 优化器介绍
  • 6.4 ART中的IR—HInstruction
  • 6.5 寄存器分配
  • 6.6 机器码生成相关代码介绍
  • 6.7 总结
  • 6.8 参考资料
  • 第7章 虚拟机的创建
  • 7.1 概述
  • 7.2 Runtime Create介绍
  • 7.3 MemMap与OatFileManager
  • 7.4 FaultManager介绍
  • 7.5 Thread介绍
  • 7.6 Heap学习之一
  • 7.7 JavaVMExt和JNIEnvExt
  • 7.8 ClassLinker
  • 7.9 总结和阅读指导
  • 第8章 虚拟机的启动
  • 8.1 Runtime Start
  • 8.2 初识JNI
  • 8.3 Jit LoadCompilerLibrary
  • 8.4 Runtime InitNativeMethods
  • 8.5 Thread相关
  • 8.6 Runtime CreateSystemClassLoader
  • 8.7 类的加载、链接和初始化
  • 8.8 虚拟机创建和启动关键内容梳理
  • 第9章 深入理解dex2oat
  • 9.1 概述
  • 9.2 ParseArgs介绍
  • 9.3 OpenFile介绍
  • 9.4 Setup介绍
  • 9.5 CompileImage
  • 9.6 OAT和ART文件格式介绍
  • 9.7 总结
  • 第10章 解释执行和JIT
  • 10.1 基础知识
  • 10.2 解释执行
  • 10.3 ART中的JIT
  • 10.4 HDeoptimize的处理
  • 10.5 Instrumentation介绍
  • 10.6 异常投递和处理
  • 10.7 总结
  • 第11章 ART中的JNI
  • 11.1 JavaVM和JNIEnv
  • 11.2 Java native方法的调用
  • 11.3 CallStaticVoidMethod
  • 11.4 JNI中引用型对象的管理
  • 11.5 总结
  • 第12章 CheckPoints、线程同步及信号处理
  • 12.1 CheckPoints介绍
  • 12.2 ThreadList和ThreadState
  • 12.3 线程同步相关知识
  • 12.4 volatile成员的读写
  • 12.5 信号处理
  • 12.6 总结
  • 第13章 内存分配与释放
  • 13.1 Space等关键类介绍
  • 13.2 ZygoteSpace
  • 13.3 BumpPointerSpace和RegionSpace
  • 13.4 DlMallocSpace和RosAllocSpace
  • 13.5 LargeObjectMapSpace
  • 13.6 new-instance/array指令的处理
  • 13.7 细观Space
  • 13.8 Heap学习之二
  • 13.9 总结
  • 第14章 ART中的GC
  • 14.1 GC基础知识
  • 14.2 Runtime VisitRoots
  • 14.3 ART GC概览
  • 14.4 MarkSweep
  • 14.5 ConcurrentCopying
  • 14.6 MarkCompact
  • 14.7 SemiSpace
  • 14.8 Java Reference对象的处理
  • 14.9 Heap学习之三
  • 14.10 总结
  • 14.11 参考资料
展开全部