失效链接处理 |
深入理解Android Java虚拟机AR PDF 下蝲
本站整理下蝲Q?/strong>
版权归出版社和原作者所有,链接已删除,误买正?/b>
用户下蝲说明Q?/strong>
?sh)子版仅供预览,下蝲?4时内务必删除,支持正版Q喜Ƣ的误买正版书c:(x)
http://product.dangdang.com/27848574.html
相关截图Q?br />
![]() 资料介:(x) q是一部从源代码角度分析和讲解Android虚拟机ART的`巨著,核心内容和h(hun)g现在3个方面:(x) *Q细致、深入地分析了ART虚拟机的架构、设计与实现原理Q能让读者对ART虚拟机有透彻了解Q?/span> W二Q能让Andriodpȝ工程师和应用工程师从底层了解整个Androidpȝ的运行机理,从而写出更高质量的应用Q?/span> W三QJava虚拟机是一?ldquo;庞然大物”Q学?fn)和理解的门槛较高,ART是迄今应?为广泛的JVM实现Q本书ؓ(f)读者学?fn)JVM提供了独特的视角和更为容易的路径?/span> 全书?4章:(x) W?章介l了在学?fn)ART虚拟机前需要准备的工具和环境,以及(qing)本书的内容结构和阅读注意事项Q徏议仔l读和反复读Q?/span> W?~4章详l讲解了Class文g、dex文g和ELF文g的格式和内容Q理解Class文g是学?fn)JVM?步,dex和ELF者是学习(fn)Dalvik虚拟机和ART虚拟机的的前提和基础Q?/span> W?章详l讲解了ART虚拟机的实现语言C 11Q是阅读ART源代码的知识Q?/span> W?~8章详l讲解了ART虚拟Z与编译和Runtime相关的大量知识,q是虚拟机的核心和难点; W?章详l讲解了dex字节码{机器码的核心q程dex2oat以及(qing).oat?art的文件格式; W?0~11章详l讲解了虚拟机的解释执行、JIT部分以及(qing)异常的投递和处理的过E,以及(qing)JNI在ART虚拟Z的实现?/span> W?2~14章详l讲解了虚拟ZJavaU程的执行、内存分配和释放、垃圑֛收的原理与实现?/span> 本书是经怸?ldquo;深入理解Android”pd的第8本,l承了该pd图书严}、细致、深入、编排考究的优点,怿所有Android工程师和Java工程师都能从中受益?/span> 资料目录Q?/strong> 推荐?/strong> 前言 W?章 本书1 1.1 概述1 1.2 准备环境和工? 1.2.1 准备源代? 1.2.2 准备Source Insight2 1.2.3 准备模拟器和自制pȝ镜像5 1.2.4 结8 1.3 本书的内? 1.4 本书资源下蝲说明12 W?章 深入理解Class文g格式13 2.1 Class文g格式总览13 2.2 帔R池及(qing)相关内容14 2.2.1 帔R的cd和关p?4 2.2.2 信息描述规则18 2.2.3 帔R池实例剖?9 2.3 field_info和method_info19 2.4 access_flags介绍21 2.5 属性介l?2 2.5.1 属性概?2 2.5.2 Code属?3 2.5.3 LineNumberTable属?5 2.5.4 LocalVariableTable属?6 2.6 Java指o(h)码介l?7 2.6.1 指o(h)码和助记W?7 2.6.2 如何阅读规范28 2.7 学习(fn)路线推荐30 2.8 参考资?0 W?章 深入理解Dex文g格式31 3.1 Dex文g格式总览31 3.1.1 Dex和Class文g格式的区?1 3.1.2 Dex文g格式的概?5 3.2 认识Dex文g36 3.2.1 header_item36 3.2.2 string_id_item{?7 3.2.3 class_def38 3.2.4 code_item40 3.3 Dex指o(h)码介l?1 3.3.1 insns的组lŞ?1 3.3.2 指o(h)码描q规?2 3.4 学习(fn)路线推荐44 3.5 参考资?5 W?章 深入理解ELF文g格式46 4.1 概述46 4.2 ELF文g格式介绍46 4.2.1 ELF文g头结构介l?7 4.2.2 Linking View下的ELF52 4.2.3 Execution View下的ELF61 4.2.4 实例分析Q调用动态库中的函数65 4.2.5 ELFȝ72 4.3 学习(fn)路线推荐73 4.4 参考资?3 W?章 认识C 1174 5.1 数据cd76 5.1.1 基本内置数据cd介绍76 5.1.2 指针、引用和voidcd77 5.1.3 字符和字W串81 5.1.4 数组82 5.2 C 源码构成?qing)编?3 5.2.1 头文件示?3 5.2.2 源文件示?5 5.2.3 ~译86 5.3 Class介绍88 5.3.1 构造、赋值和析构函数89 5.3.2 cȝz和?7 5.3.3 友元和类的前向声?03 5.3.4 explicit构造函?05 5.3.5 C 中的struct106 5.4 操作W重?06 5.4.1 操作W重载的实现方式107 5.4.2 输出和输入操作符重蝲108 5.4.3 ->?操作W重?10 5.4.4 new和delete操作W重?11 5.4.5 函数调用q算W重?17 5.5 函数模板与类模板118 5.5.1 函数模板119 5.5.2 cL?22 5.6 lambda表达?25 5.7 STL介绍127 5.7.1 stringc?28 5.7.2 容器c?29 5.7.3 法和函数对象介l?34 5.7.4 指针c?38 5.7.5 探讨STL的学?40 5.8 其他常用知识141 5.8.1 initializer_list141 5.8.2 带作用域的enum141 5.8.3 constexpr142 5.8.4 static_assert143 5.9 参考资?43 W?章 ~译dex字节码ؓ(f)机器?45 6.1 ~译器全貌介l?47 6.2 ~译器前端介l?50 6.2.1 词法分析和lex151 6.2.2 语法分析和yacc160 6.2.3 语义分析和IR生成介绍171 6.3 优化器介l?75 6.3.1 构造CFG176 6.3.2 分析和处理CFG181 6.3.3 数据分析与SSA191 6.3.4 IR优化204 6.4 ART中的IR—HInstruction222 6.4.1 ART中的IR222 6.4.2 IR之间的关p?25 6.4.3 ART IR对象的初始化231 6.5 寄存器分?33 6.5.1 LSRA介绍235 6.5.2 LSRA相关代码介绍247 6.6 机器码生成相关代码介l?71 6.6.1 GenerateFrameEntry272 6.6.2 VisitAdd和VisitInstance-FieldGet273 6.6.3 GenerateSlowPaths275 6.7 ȝ277 6.8 参考资?80 W?章 虚拟机的创徏283 7.1 概述284 7.1.1 JniInvocation Init函数介绍286 7.1.2 AndroidRuntime startVm函数介绍287 7.2 Runtime Create介绍288 7.2.1 Create函数介绍288 7.2.2 Init函数介绍290 7.3 MemMap与OatFileManager293 7.3.1 MemMap介绍293 7.3.2 OatFileManager介绍298 7.4 FaultManager介绍302 7.4.1 信号处理和SignalAction介绍302 7.4.2 FaultManager介绍307 7.5 Thread介绍311 7.5.1 Startup函数介绍311 7.5.2 Attach函数介绍312 7.6 Heap学习(fn)之一325 7.6.1 初识Heap中的关键c?26 7.6.2 Heap构造函数部?37 7.7 JavaVMExt和JNIEnvExt340 7.7.1 JavaVMExt341 7.7.2 JNIEnvExt343 7.7.3 ȝ344 7.8 ClassLinker345 7.8.1 关键cMl?45 7.8.2 ClassLinker构造函?52 7.8.3 InitFromBootImage353 7.8.4 ClassLinkerȝ360 7.9 ȝ和阅L?62 W?章 虚拟机的启动363 8.1 Runtime Start364 8.2 初识JNI365 8.2.1 JNI中的数据cd365 8.2.2 ScopedObjectAccess{辅助类367 8.2.3 常用JNI函数介绍369 8.3 Jit LoadCompilerLibrary373 8.4 Runtime InitNativeMethods374 8.4.1 JniConstants Init374 8.4.2 RegisterRuntimeNative Methods375 8.4.3 WellKnownClasses Init和LastInit376 8.5 Thread相关376 8.5.1 Runtime InitThreadGroups377 8.5.2 Thread FinishSetup377 8.5.3 Runtime StartDaemonThreads380 8.6 Runtime CreateSystemClassLoader381 8.7 cȝ加蝲、链接和初始?83 8.7.1 关键cMl?83 8.7.2 SetupClass392 8.7.3 LoadClass相关函数393 8.7.4 LinkClass相关函数398 8.7.5 DefineClass414 8.7.6 Verify相关函数416 8.7.7 Initialize相关函数424 8.7.8 ClassLinker中其他常用函?26 8.7.9 ClassLoader介绍437 8.8 虚拟机创建和启动关键内容梳理445 W?章 深入理解dex2oat447 9.1 概述448 9.2 ParseArgs介绍452 9.2.1 CompilerOptionscMl?53 9.2.2 ProcessOptions函数介绍454 9.2.3 InsertCompileOptions函数介绍455 9.3 OpenFile介绍456 9.4 Setup介绍458 9.4.1 Setup代码分析之一458 9.4.2 Setup代码分析之二464 9.4.3 Setup代码分析之三474 9.4.4 Setup代码分析之四484 9.5 CompileImage484 9.5.1 Compile485 9.5.2 ArtCompileDEX496 9.5.3 OptimizingCompiler JniCompile499 9.5.4 OptimizingCompiler Compile527 9.6 OAT和ART文g格式介绍544 9.6.1 OAT文g格式544 9.6.2 ART文g格式550 9.6.3 oatdump介绍554 9.7 ȝ561 W?0章 解释执行和JIT562 10.1 基础知识564 10.1.1 LinkCode564 10.1.2 Runtime ArtMethod566 10.1.3 栈和参数传?72 10.2 解释执行580 10.2.1 art_quick_to_interpreter_bridge580 10.2.2 artQuickToInterpreter-Bridge582 10.2.3 EnterInterpreterFromEntry-Point584 10.2.4 调用栈的理和遍?93 10.3 ART中的JIT599 10.3.1 Jit、JitCodeCache{?00 10.3.2 JIT阈值控制与处理609 10.3.3 OSR的处?12 10.4 HDeoptimize的处?15 10.4.1 VisitDeoptimize相关616 10.4.2 QuickExceptionHandler相关618 10.4.3 解释执行中关于Deoptimize的处?21 10.5 Instrumentation介绍623 10.5.1 MethodEnterEvent和MethodExitEvent624 10.5.2 DexPcMovedEvent625 10.6 异常投递和处理625 10.6.1 抛异?26 10.6.2 异常处理629 10.7 ȝ635 W?1章 ART中的JNI636 11.1 JavaVM和JNIEnv637 11.1.1 JavaVMExt相关介绍638 11.1.2 JNIEnvExt介绍642 11.2 Java nativeҎ(gu)的调?44 11.2.1 art_jni_dlsym_lookup_stub644 11.2.2 art_quick_generic_jni_trampoline646 11.3 CallStaticVoidMethod651 11.4 JNI中引用型对象的管?53 11.4.1 关键cMl?53 11.4.2 JniMethodStart和JniMethod-End657 11.4.3 IndirectReferenceTable相关函数658 11.4.4 NewObject和jobject的含?60 11.4.5 JNI中引用对象相?62 11.4.6 PushLocalFrame和PopLocalFrame663 11.4.7 回收引用对象664 11.5 ȝ666 W?2章 CheckPoints、线E同步及(qing)信号处理668 12.1 CheckPoints介绍669 12.1.1 讄Check Point标志?70 12.1.2 Check Points的设|?72 12.1.3 执行查点处的d676 12.2 ThreadList和ThreadState681 12.2.1 U程ID683 12.2.2 RunCheckpoint和Dump684 12.2.3 SuspendAll和ResumeAll687 12.2.4 Thread状态切?90 12.3 U程同步相关知识691 12.3.1 关键cMl?92 12.3.2 synchronized的处?97 12.3.3 Object wait、notifyAll{?05 12.4 volatile成员的读?07 12.4.1 基础知识707 12.4.2 解释执行模式下的处理711 12.4.3 机器码执行模式的处理712 12.5 信号处理714 12.5.1 zygoteq程的处?14 12.5.2 非zygoteq程的处?16 12.6 ȝ719 W?3章 内存分配与释?20 13.1 Space{关键类介绍722 13.2 ZygoteSpace723 13.3 BumpPointerSpace和RegionSpace725 13.3.1 BumpPointerSpace726 13.3.2 RegionSpace733 13.4 DlMallocSpace和RosAlloc-Space740 13.4.1 DlMallocSpace741 13.4.2 RosAllocSpace745 13.4.3 rosalloc介绍748 13.5 LargeObjectMapSpace760 13.6 new-instance/array指o(h)的处?62 13.6.1 讄内存分配?62 13.6.2 解释执行模式下的处理767 13.6.3 机器码执行模式下的处?70 13.6.4 Heap AllocObjectWith-Allocator773 13.7 l观Space779 13.7.1 Spacec?79 13.7.2 ContinuousSpace和Discon-tinuousSpacec?81 13.7.3 MemMapSpace和Continuous MemMapAllocSpacec?82 13.7.4 MallocSpacec?83 13.8 Heap学习(fn)之二784 13.8.1 Heap构造函?84 13.8.2 关键cMl?92 13.8.3 ObjectVisitReferences806 13.9 ȝ812 W?4章 ART中的GC813 14.1 GC基础知识814 14.1.1 Mark-Sweep Collection原理介绍815 14.1.2 Copying Collection原理介绍817 14.1.3 Mark-Compact Collection原理介绍818 14.1.4 其他概念819 14.2 Runtime VisitRoots819 14.2.1 关键数据l构821 14.2.2 Thread VisitRoots824 14.3 ART GC概览827 14.3.1 关键数据l构827 14.3.2 ART GC选项830 14.3.3 创徏回收器和讄回收{略832 14.4 MarkSweep835 14.4.1 Heap相关成员变量取值情?35 14.4.2 MarkSweep概貌837 14.4.3 MarkingPhase840 14.4.4 PausePhase848 14.4.5 ReclaimPhase851 14.4.6 FinishPhase857 14.4.7 PartialMarkSweep857 14.4.8 StickyMarkSweep858 14.4.9 Concurrent MarkSweep864 14.4.10 Parallel GC868 14.4.11 MarkSweep结869 14.5 ConcurrentCopying870 14.5.1 InitalizePhase871 14.5.2 FlipThreadRoots873 14.5.3 MarkingPhase881 14.5.4 ReclaimPhase883 14.5.5ConcurrentCopying结885 14.6 MarkCompact885 14.6.1 MarkingPhase886 14.6.2 ReclaimPhase889 14.6.3 MarkCompact结891 14.7 SemiSpace892 14.7.1 InitializePhase893 14.7.2 MarkingPhase894 14.7.3 SemiSpace结898 14.8 Java Reference对象的处?99 14.8.1 基础知识899 14.8.2 MarkSweep中Reference对象的处?03 14.8.3ReferenceProcessor904 14.8.4 PhantomReference的处?12 14.8.5 finalize函数的调?13 14.8.6 Reference处理结917 14.9 Heap学习(fn)之三917 14.9.1 Heap Trim917 14.9.2 CollectGarbageInternal919 14.9.3 PreZygoteFork924 14.9.4 内存片的解?26 14.10 ȝ927
14.11 参考资?28 |