×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
暂无评论
图文详情
  • ISBN:9787302600848
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:288
  • 出版时间:2022-06-01
  • 条形码:9787302600848 ; 978-7-302-60084-8

本书特色

本书从一个编译器开发者的视角,带领读者在ART的世界里进行遨游,和大家一起了解ART的各部分及其主要流程。本书在编写的过程中,力图将ART的整体架构梳理清楚,包括在介绍其中的模块的时候,也是将架构介绍清楚作为**目标,尽量避免太多细节内容。代码总在不断的更新,但是模块架构和整体架构不会变更那么频繁。掌握好架构,既可以快速地了解ART的整体情况,也有利于自己根据需要对某些模块进行深入的研究。同时,为了让读者能熟悉*新的代码,本书选用了当时*新的Android 10.0.0_r39的代码,读者可以采用该版本的代码对照本书进行学习。 深度解析Android Runtime架构与流程的实现 ★本书可以帮助读者快速了解Android Runtime(ART)的源码结构和内部流程,可以作为分析ART代码实现的参考资料和入门书。由于ART本身涉及许多编译技术,所以建议读者可以结合编译原理知识来阅读本书及相关代码,从而能够达到理论结合实践的效果。 ——邢明杰 中国科学院软件研究所高级工程师 ★非常高兴在中文技术领域看到这样一本新书,介绍*新版本的 Android ART 虚拟机的内部技术实现。编译器和虚拟机领域属于计算机软件领域的基石,而国内从事相关技术领域研究的同行非常少。希望作者的努力能够吸引更多人投身到编译器和虚拟机领域中来。 ——吴伟 OSDT社区负责人 ★一直关注史宁宁的编译技术分享。他总是能从源码角度抽丝剥茧,将代码的核心价值呈现给读者。现有的Runtime图书大多关注内存管理、性能调优和语言特性支持等,很高兴本书能从编译器开发者的视角介绍Android Runtime(ART),让更多读者在学习Runtime的同时了解更多的编译器知识。 ——汤伟 蚂蚁集团资深技术专家 ★从2010年接触Android到现在已经有10余年,当时就预判Android会大放光彩,现在来看当初的预判无疑是对的。丰富多彩的Android应用主要采用Java语言开发,而ART就相当于Java语言的地基,地基稳不稳、快不快直接决定了上面建设的应用程序是否稳定和顺畅,其重要性不言而喻。本书比较深入和系统地介绍了ART,是学习*新ART的绝佳教材。 ——熊刚 10+年互联网从业人员 ★读过不少Android Runtime方面的书,但大多重原理阐述。《Android Runtime源码解析》结合源码,深入地分析了Android Runtime中dex2oat、dex本地编译优化、JIT、dex加载运行、内存回收等关键组件的工程实现。Android Runtime是一个集编译和解释于一体的运行时系统,阅读本书需要一定的编译原理理论知识。本书结构清晰、讲解详细、内容夯实、聚焦重点,强烈推荐给对Android应用快稳省优化、Android应用安全防护及对虚拟机、编译感兴趣的朋友。 ——涂先胜 高级安全专家

内容简介

Android Runtime(ART)作为Android系统的核心组建,是Android应用运行及其效率的基础,了解ART的组成和执行流程,有利于Android应用开发者高效开发Android应用。同时,ART作为一种Java虚拟机,也是广大虚拟机开发者学习和改进的目标,了解ART有助于虚拟机的开发和调优。 本书基于Android 10.0.0_r39源码,分析了ART基础、ART的compiler、ART的启动与运行、ART中的垃圾回收。这些分析旨在为读者搭建ART的基本框架,带领读者一起了解ART的基本情况,为进一步了解ART打下基础。 本书适合想了解ART的App开发者、Android系统优化开发者及虚拟机开发者阅读,也适合高校学生学习虚拟机使用。

目录

第1章ART基础


1.1虚拟机基础


1.2ART发展历史


1.3ART核心架构


1.4源码目录介绍


1.5小结


第2章dex2oat工具介绍


2.1dex2oat入口代码分析


2.2dex2oat的driver分析


2.3dex2oat driver的编译函数


2.4DexToDexCompiler分析


2.5小结


第3章OptimizingCompiler介绍


3.1OptimizingCompiler类的JNI处理


3.2OptimizingCompiler:: Compile()


3.3HGraph的构建


3.3.1构建基于基本代码块的CFG


3.3.2构建支配树


3.3.3构建SSA


3.4优化


3.5寄存器分配


3.5.1PrepareForRegisterAllocation


3.5.2SsaLivenessAnalysis


3.5.3RegisterAllocator


3.6代码生成


3.7OptimizingCompiler总结


3.8小结


第4章OptimizingCompiler优化算法分析


4.1优化算法框架


4.2常量折叠


4.3指令简化


4.4死代码优化


4.5循环体优化


4.6指令下沉


4.7硬件平台相关优化pass及其实现


4.8小结


第5章ART启动分析


5.1ART启动中的虚拟机启动一


5.2ART启动中的虚拟机启动二


5.3ART启动中的JIT编译器的创建


5.4ART启动中的Thread处理


5.5ART启动中的运行时本地方法初始化


5.6ART启动中的其他本地方法的注册


5.7Zygote进程


5.7.1System Server进程


5.7.2应用进程


5.8小结


第6章ART的执行


6.1ART运行基本流程


6.2Zygote进程调用应用程序


6.2.1Zygote.forkAndSpecialize


6.2.2ZygoteConnection.handleChildProc


6.3类的查找与定义


6.4方法的加载和链接


6.5方法的执行


6.6小结


第7章ART GC实现


7.1GC的基本内容


7.2ART GC回收方案介绍


7.3ART GC回收器的实现


7.3.1回收器的类型


7.3.2不同类型回收器的实现


7.4ART GC的分配器实现


7.4.1分配器与空间类


7.4.2分配器与回收器


7.5ART GC的使用流程


7.5.1分配器的使用


7.5.2回收器的使用


7.6小结


参考文献


后记


展开全部

作者简介

史宁宁,现任中国科学院软件研究所智能软件研究中心PLCT实验室项目主管。吉林大学计算机学院硕士,2012年起作为核心开发人员和项目经理参与组织开发多个编译器项目。长期坚持撰写技术博客,其中“LLVM每日谈”“方舟编译器学习笔记”等专栏影响较大,曾出版图书两部。目前活跃在OSDT/HelloGCC/HelloLLVM、方舟编译器、RISC-V等开源社区,主要研究内容为Clang/LLVM、JVM等。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航