深入理解Android:Java虛擬機(jī)ART
作品簡(jiǎn)介
本書是筆者“深入理解Android”系列的第四本。本書將關(guān)注Android系統(tǒng)中至關(guān)重要的部分——Java虛擬機(jī)ART。隨著Android設(shè)備的大規(guī)模普及,ART虛擬機(jī)已經(jīng)成為當(dāng)今使用最為廣泛的JVM之一。所以,對(duì)ART虛擬機(jī)進(jìn)行研究有著非同尋常的意義。本書的出現(xiàn)在一定程度上填補(bǔ)了這方面的空白。
本書核心內(nèi)容:(1).class、.dex和ELF文件格式介紹、閱讀源碼所需的C++11基礎(chǔ)知識(shí)。(2)以編譯原理為基礎(chǔ),介紹ART虛擬機(jī)編譯相關(guān)的知識(shí)。(3)以ARTRuntime對(duì)象的創(chuàng)建為主線,介紹主要的模塊及一些關(guān)鍵類、數(shù)據(jù)結(jié)構(gòu)等知識(shí)。(4)ART虛擬機(jī)中類的解析、加載、鏈接、初始化等。(5)dex字節(jié)碼轉(zhuǎn)機(jī)器碼的核心進(jìn)程dex2oat以及.oat和.art文件格式。(6)ART虛擬機(jī)的解釋執(zhí)行、JIT和JNI等知識(shí)。(7)Java線程執(zhí)行相關(guān)的知識(shí),包括線程暫停和恢復(fù)運(yùn)行、synchronized、Objectwait/notify的實(shí)現(xiàn)、volatile變量的讀寫處理等。(8)內(nèi)存分配和釋放相關(guān)的知識(shí)。(9)和垃圾回收有關(guān)的基礎(chǔ)知識(shí),相關(guān)垃圾回收器的代碼實(shí)現(xiàn)、JavaReference的處理等。
鄧凡平著。
作品目錄
- 前言
- 第1章 本書必讀
- 1.1 概述
- 1.2 準(zhǔn)備環(huán)境和工具
- 1.3 本書的內(nèi)容
- 1.4 本書資源下載說(shuō)明
- 第2章 深入理解Class文件格式
- 2.1 Class文件格式總覽
- 2.2 常量池及相關(guān)內(nèi)容
- 2.3 field_info和method_info
- 2.4 access_flags介紹
- 2.5 屬性介紹
- 2.6 Java指令碼介紹
- 2.7 學(xué)習(xí)路線推薦
- 2.8 參考資料
- 第3章 深入理解Dex文件格式
- 3.1 Dex文件格式總覽
- 3.2 認(rèn)識(shí)Dex文件
- 3.3 Dex指令碼介紹
- 3.4 學(xué)習(xí)路線推薦
- 3.5 參考資料
- 第4章 深入理解ELF文件格式
- 4.1 概述
- 4.2 ELF文件格式介紹
- 4.3 學(xué)習(xí)路線推薦
- 4.4 參考資料
- 第5章 認(rèn)識(shí)C++11
- 5.1 數(shù)據(jù)類型
- 5.2 C++源碼構(gòu)成及編譯
- 5.3 Class介紹
- 5.4 操作符重載
- 5.5 函數(shù)模板與類模板
- 5.6 lambda表達(dá)式
- 5.7 STL介紹
- 5.8 其他常用知識(shí)
- 5.9 參考資料
- 第6章 編譯dex字節(jié)碼為機(jī)器碼
- 6.1 編譯器全貌介紹
- 6.2 編譯器前端介紹
- 6.3 優(yōu)化器介紹
- 6.4 ART中的IR—HInstruction
- 6.5 寄存器分配
- 6.6 機(jī)器碼生成相關(guān)代碼介紹
- 6.7 總結(jié)
- 6.8 參考資料
- 第7章 虛擬機(jī)的創(chuàng)建
- 7.1 概述
- 7.2 Runtime Create介紹
- 7.3 MemMap與OatFileManager
- 7.4 FaultManager介紹
- 7.5 Thread介紹
- 7.6 Heap學(xué)習(xí)之一
- 7.7 JavaVMExt和JNIEnvExt
- 7.8 ClassLinker
- 7.9 總結(jié)和閱讀指導(dǎo)
- 第8章 虛擬機(jī)的啟動(dòng)
- 8.1 Runtime Start
- 8.2 初識(shí)JNI
- 8.3 Jit LoadCompilerLibrary
- 8.4 Runtime InitNativeMethods
- 8.5 Thread相關(guān)
- 8.6 Runtime CreateSystemClassLoader
- 8.7 類的加載、鏈接和初始化
- 8.8 虛擬機(jī)創(chuàng)建和啟動(dòng)關(guān)鍵內(nèi)容梳理
- 第9章 深入理解dex2oat
- 9.1 概述
- 9.2 ParseArgs介紹
- 9.3 OpenFile介紹
- 9.4 Setup介紹
- 9.5 CompileImage
- 9.6 OAT和ART文件格式介紹
- 9.7 總結(jié)
- 第10章 解釋執(zhí)行和JIT
- 10.1 基礎(chǔ)知識(shí)
- 10.2 解釋執(zhí)行
- 10.3 ART中的JIT
- 10.4 HDeoptimize的處理
- 10.5 Instrumentation介紹
- 10.6 異常投遞和處理
- 10.7 總結(jié)
- 第11章 ART中的JNI
- 11.1 JavaVM和JNIEnv
- 11.2 Java native方法的調(diào)用
- 11.3 CallStaticVoidMethod
- 11.4 JNI中引用型對(duì)象的管理
- 11.5 總結(jié)
- 第12章 CheckPoints、線程同步及信號(hào)處理
- 12.1 CheckPoints介紹
- 12.2 ThreadList和ThreadState
- 12.3 線程同步相關(guān)知識(shí)
- 12.4 volatile成員的讀寫
- 12.5 信號(hào)處理
- 12.6 總結(jié)
- 第13章 內(nèi)存分配與釋放
- 13.1 Space等關(guān)鍵類介紹
- 13.2 ZygoteSpace
- 13.3 BumpPointerSpace和RegionSpace
- 13.4 DlMallocSpace和RosAllocSpace
- 13.5 LargeObjectMapSpace
- 13.6 new-instance/array指令的處理
- 13.7 細(xì)觀Space
- 13.8 Heap學(xué)習(xí)之二
- 13.9 總結(jié)
- 第14章 ART中的GC
- 14.1 GC基礎(chǔ)知識(shí)
- 14.2 Runtime VisitRoots
- 14.3 ART GC概覽
- 14.4 MarkSweep
- 14.5 ConcurrentCopying
- 14.6 MarkCompact
- 14.7 SemiSpace
- 14.8 Java Reference對(duì)象的處理
- 14.9 Heap學(xué)習(xí)之三
- 14.10 總結(jié)
- 14.11 參考資料