中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折!

歡迎光臨中圖網 請 | 注冊
> >>
移動開發深入理解ANDROID:JAVA虛擬機ART

包郵 移動開發深入理解ANDROID:JAVA虛擬機ART

作者:鄧凡平
出版社:機械工業出版社出版時間:2019-04-01
開本: 16開 頁數: 928
中 圖 價:¥116.6(6.9折) 定價  ¥169.0 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
本類五星書更多>

移動開發深入理解ANDROID:JAVA虛擬機ART 版權信息

移動開發深入理解ANDROID:JAVA虛擬機ART 本書特色

這是一部從源代碼角度分析和講解Android虛擬機ART的鴻篇巨著,核心內容和價值體現在3個方面:
*,細致、深入地分析了ART虛擬機的架構、設計與實現原理,能讓讀者對ART虛擬機有透徹了解;
第二,能讓Andriod系統工程師和應用工程師從底層了解整個Android系統的運行機理,從而寫出更高質量的應用;
第三,Java虛擬機是一個“龐然大物”,學習和理解的門檻較高,ART是迄今應用*為廣泛的JVM實現,本書為讀者學習JVM提供了獨特的視角和更為容易的路徑。
全書共14章:
第1章介紹了在學習ART虛擬機前需要準備的工具和環境,以及本書的內容結構和閱讀注意事項,建議仔細讀和反復讀;
第2~4章詳細講解了Class文件、dex文件和ELF文件的格式和內容,理解Class文件是學習JVM的*步,dex和ELF者是學習Dalvik虛擬機和ART虛擬機的的前提和基礎;
第5章詳細講解了ART虛擬機的實現語言C 11,是閱讀ART源代碼**的知識;
第6~8章詳細講解了ART虛擬機中與編譯和Runtime相關的大量知識,這是虛擬機的核心和難點;這是一部從源代碼角度分析和講解Android虛擬機ART的鴻篇巨著,核心內容和價值體現在3個方面: *,細致、深入地分析了ART虛擬機的架構、設計與實現原理,能讓讀者對ART虛擬機有透徹了解; 第二,能讓Andriod系統工程師和應用工程師從底層了解整個Android系統的運行機理,從而寫出更高質量的應用; 第三,Java虛擬機是一個“龐然大物”,學習和理解的門檻較高,ART是迄今應用*為廣泛的JVM實現,本書為讀者學習JVM提供了獨特的視角和更為容易的路徑。 全書共14章: 第1章介紹了在學習ART虛擬機前需要準備的工具和環境,以及本書的內容結構和閱讀注意事項,建議仔細讀和反復讀; 第2~4章詳細講解了Class文件、dex文件和ELF文件的格式和內容,理解Class文件是學習JVM的*步,dex和ELF者是學習Dalvik虛擬機和ART虛擬機的的前提和基礎; 第5章詳細講解了ART虛擬機的實現語言C 11,是閱讀ART源代碼**的知識; 第6~8章詳細講解了ART虛擬機中與編譯和Runtime相關的大量知識,這是虛擬機的核心和難點; 第9章詳細講解了dex字節碼轉機器碼的核心進程dex2oat以及.oat和.art的文件格式; 第10~11章詳細講解了虛擬機的解釋執行、JIT部分以及異常的投遞和處理的過程,以及JNI在ART虛擬機中的實現。 第12~14章詳細講解了虛擬機中Java線程的執行、內存分配和釋放、垃圾回收的原理與實現。本書是經典叢書“深入理解Android”系列的第8本,繼承了該系列圖書嚴謹、細致、深入、編排考究的優點,相信所有Android工程師和Java工程師都能從中受益。

移動開發深入理解ANDROID:JAVA虛擬機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的處理等。

移動開發深入理解ANDROID:JAVA虛擬機ART 目錄

推薦序 前言 第1章 本書必讀1 1.1 概述1 1.2 準備環境和工具2 1.2.1 準備源代碼2 1.2.2 準備Source Insight2 1.2.3 準備模擬器和自制系統鏡像5 1.2.4 小結8 1.3 本書的內容9 1.4 本書資源下載說明12 第2章 深入理解Class文件格式13 2.1 Class文件格式總覽13 2.2 常量池及相關內容14 2.2.1 常量項的類型和關系14 2.2.2 信息描述規則18 2.2.3 常量池實例剖析19 2.3 field_info和method_info19 2.4 access_flags介紹21 2.5 屬性介紹22 2.5.1 屬性概貌22 2.5.2 Code屬性23 2.5.3 LineNumberTable屬性25 2.5.4 LocalVariableTable屬性26 2.6 Java指令碼介紹27 2.6.1 指令碼和助記符27 2.6.2 如何閱讀規范28 2.7 學習路線推薦30 2.8 參考資料30 第3章 深入理解Dex文件格式31 3.1 Dex文件格式總覽31 3.1.1 Dex和Class文件格式的區別31 3.1.2 Dex文件格式的概貌35 3.2 認識Dex文件36 3.2.1 header_item36 3.2.2 string_id_item等37 3.2.3 class_def38 3.2.4 code_item40 3.3 Dex指令碼介紹41 3.3.1 insns的組織形式41 3.3.2 指令碼描述規則42 3.4 學習路線推薦44 3.5 參考資料45 第4章 深入理解ELF文件格式46 4.1 概述46 4.2 ELF文件格式介紹46 4.2.1 ELF文件頭結構介紹47 4.2.2 Linking View下的ELF52 4.2.3 Execution View下的ELF61 4.2.4 實例分析:調用動態庫中的函數65 4.2.5 ELF總結72 4.3 學習路線推薦73 4.4 參考資料73 第5章 認識C 1174 5.1 數據類型76 5.1.1 基本內置數據類型介紹76 5.1.2 指針、引用和void類型77 5.1.3 字符和字符串81 5.1.4 數組82 5.2 C 源碼構成及編譯83 5.2.1 頭文件示例83 5.2.2 源文件示例85 5.2.3 編譯86 5.3 Class介紹88 5.3.1 構造、賦值和析構函數89 5.3.2 類的派生和繼承97 5.3.3 友元和類的前向聲明103 5.3.4 explicit構造函數105 5.3.5 C 中的struct106 5.4 操作符重載106 5.4.1 操作符重載的實現方式107 5.4.2 輸出和輸入操作符重載108 5.4.3 ->和*操作符重載110 5.4.4 new和delete操作符重載111 5.4.5 函數調用運算符重載117 5.5 函數模板與類模板118 5.5.1 函數模板119 5.5.2 類模板122 5.6 lambda表達式125 5.7 STL介紹127 5.7.1 string類128 5.7.2 容器類129 5.7.3 算法和函數對象介紹134 5.7.4 智能指針類138 5.7.5 探討STL的學習140 5.8 其他常用知識141 5.8.1 initializer_list141 5.8.2 帶作用域的enum141 5.8.3 constexpr142 5.8.4 static_assert143 5.9 參考資料143 第6章 編譯dex字節碼為機器碼145 6.1 編譯器全貌介紹147 6.2 編譯器前端介紹150 6.2.1 詞法分析和lex151 6.2.2 語法分析和yacc160 6.2.3 語義分析和IR生成介紹171 6.3 優化器介紹175 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之間的關系225 6.4.3 ART IR對象的初始化231 6.5 寄存器分配233 6.5.1 LSRA介紹235 6.5.2 LSRA相關代碼介紹247 6.6 機器碼生成相關代碼介紹271 6.6.1 GenerateFrameEntry272 6.6.2 VisitAdd和VisitInstance-FieldGet273 6.6.3 GenerateSlowPaths275 6.7 總結277 6.8 參考資料280 第7章 虛擬機的創建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學習之一325 7.6.1 初識Heap中的關鍵類326 7.6.2 Heap構造函數**部分337 7.7 JavaVMExt和JNIEnvExt340 7.7.1 JavaVMExt341 7.7.2 JNIEnvExt343 7.7.3 總結344 7.8 ClassLinker345 7.8.1 關鍵類介紹345 7.8.2 ClassLinker構造函數352 7.8.3 InitFromBootImage353 7.8.4 ClassLinker總結360 7.9 總結和閱讀指導362 第8章 虛擬機的啟動363 8.1 Runtime Start364 8.2 初識JNI365 8.2.1 JNI中的數據類型365 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 類的加載、鏈接和初始化383 8.7.1 關鍵類介紹383 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中其他常用函數426 8.7.9 ClassLoader介紹437 8.8 虛擬機創建和啟動關鍵內容梳理445 第9章 深入理解dex2oat447 9.1 概述448 9.2 ParseArgs介紹452 9.2.1 CompilerOptions類介紹453 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文件格式介紹544 9.6.1 OAT文件格式544 9.6.2 ART文件格式550 9.6.3 oatdump介紹554 9.7 總結561 第10章 解釋執行和JIT562 10.1 基礎知識564 10.1.1 LinkCode564 10.1.2 Runtime ArtMethod566 10.1.3 棧和參數傳遞572 10.2 解釋執行580 10.2.1 art_quick_to_interpreter_bridge580 10.2.2 artQuickToInterpreter-Bridge582 10.2.3 EnterInterpreterFromEntry-Point584 10.2.4 調用棧的管理和遍歷593 10.3 ART中的JIT599 10.3.1 Jit、JitCodeCache等600 10.3.2 JIT閾值控制與處理609 10.3.3 OSR的處理612 10.4 HDeoptimize的處理615 10.4.1 VisitDeoptimize相關616 10.4.2 QuickExceptionHandler相關618 10.4.3 解釋執行中關于Deoptimize的處理621 10.5 Instrumentation介紹623 10.5.1 MethodEnterEvent和MethodExitEvent624 10.5.2 DexPcMovedEvent625 10.6 異常投遞和處理625 10.6.1 拋異常626 10.6.2 異常處理629 10.7 總結635 第11章 ART中的JNI636 11.1 JavaVM和JNIEnv637 11.1.1 JavaVMExt相關介紹638 11.1.2 JNIEnvExt介紹642 11.2 Java native方法的調用644 11.2.1 art_jni_dlsym_lookup_stub644 11.2.2 art_quick_generic_jni_trampoline646 11.3 CallStaticVoidMethod651 11.4 JNI中引用型對象的管理653 11.4.1 關鍵類介紹653 11.4.2 JniMethodStart和JniMethod-End657 11.4.3 IndirectReferenceTable相關函數658 11.4.4 NewObject和jobject的含義660 11.4.5 JNI中引用對象相關662 11.4.6 PushLocalFrame和PopLocalFrame663 11.4.7 回收引用對象664 11.5 總結666 第12章 CheckPoints、線程同步及信號處理668 12.1 CheckPoints介紹669 12.1.1 設置Check Point標志位670 12.1.2 Check Points的設置672 12.1.3 執行檢查點處的任務676 12.2 ThreadList和ThreadState681 12.2.1 線程ID683 12.2.2 RunCheckpoint和Dump684 12.2.3 SuspendAll和ResumeAll687 12.2.4 Thread狀態切換690 12.3 線程同步相關知識691 12.3.1 關鍵類介紹692 12.3.2 synchronized的處理697 12.3.3 Object wait、notifyAll等705 12.4 volatile成員的讀寫707 12.4.1 基礎知識707 12.4.2 解釋執行模式下的處理711 12.4.3 機器碼執行模式的處理712 12.5 信號處理714 12.5.1 zygote進程的處理714 12.5.2 非zygote進程的處理716 12.6 總結719 第13章 內存分配與釋放720 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指令的處理762 13.6.1 設置內存分配器762 13.6.2 解釋執行模式下的處理767 13.6.3 機器碼執行模式下的處理770 13.6.4 Heap AllocObjectWith-Allocator773 13.7 細觀Space779 13.7.1 Space類779 13.7.2 ContinuousSpace和Discon-tinuousSpace類781 13.7.3 MemMapSpace和Continuous MemMapAllocSpace類782 13.7.4 MallocSpace類783 13.8 Heap學習之二784 13.8.1 Heap構造函數784 13.8.2 關鍵類介紹792 13.8.3 ObjectVisitReferences806 13.9 總結812 第14章 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 關鍵數據結構821 14.2.2 Thread VisitRoots824 14.3 ART GC概覽827 14.3.1 關鍵數據結構827 14.3.2 ART GC選項830 14.3.3 創建回收器和設置回收策略832 14.4 MarkSweep835 14.4.1 Heap相關成員變量取值情況835 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對象的處理899 14.8.1 基礎知識899 14.8.2 MarkSweep中Reference對象的處理903 14.8.3ReferenceProcessor904 14.8.4 PhantomReference的處理912 14.8.5 finalize函數的調用913 14.8.6 Reference處理小結917 14.9 Heap學習之三917 14.9.1 Heap Trim917 14.9.2 CollectGarbageInternal919 14.9.3 PreZygoteFork924 14.9.4 內存碎片的解決926 14.10 總結927 14.11 參考資料928
展開全部

移動開發深入理解ANDROID:JAVA虛擬機ART 作者簡介

鄧凡平 資深Android技術專家,國內早期從事Android技術研究和開發的工程師之一。從底層的虛擬機,到中間的系統層和框架層,再到上層的各種應用,它對整個Android系統的源代碼有非常深入的研究和理解。策劃并撰寫了“深入理解Android”系列圖書(目前已出版8本),累計銷量超過10萬冊,是廣大Android工程師系統、深入了解Android系統源代碼的首選。 目前就職于民生銀行總行科技部創新技術研究院,鉆研和探索物聯網等新技術在金融領域中的應用。曾就職于索尼移動,擔任資深軟件架構師。 他本人已出版著作: 《深入理解Android:卷I》(2011年) 《深入理解Android:卷II》(2012年) 《深入理解Android:Wi-Fi、NFC和GPS卷》(2014年)

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網
在線客服
主站蜘蛛池模板: 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 井式炉-台车式回火炉-丹阳市电炉厂有限公司 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | 工控机-工业平板电脑-研华工控机-研越无风扇嵌入式box工控机 | 氢氧化钙设备, 氢氧化钙生产线-淄博惠琛工贸有限公司 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 拉曼光谱仪_便携式|激光|显微共焦拉曼光谱仪-北京卓立汉光仪器有限公司 | 直齿驱动-新型回转驱动和回转支承解决方案提供商-不二传动 | 压接机|高精度压接机|手动压接机|昆明可耐特科技有限公司[官网] 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 干培两用箱-细菌恒温培养箱-菲斯福仪器| 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 紧急泄压人孔_防爆阻火器_阻火呼吸阀[河北宏泽石化] | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 打造全球沸石生态圈 - 国投盛世 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 翰香原枣子坊加盟费多少钱-正宗枣核糕配方培训利润高飘香 | 隔爆型防爆端子分线箱_防爆空气开关箱|依客思 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 衡阳耐适防护科技有限公司——威仕盾焊接防护用品官网/焊工手套/焊接防护服/皮革防护手套 | 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 涂层测厚仪_漆膜仪_光学透过率仪_十大创新厂家-果欧电子科技公司 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | 防伪溯源|防窜货|微信二维码营销|兆信_行业内领先的防伪防窜货数字化营销解决方案供应商 |