图书介绍
深入解析Android虚拟机2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- 张子言编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302344087
- 出版时间:2014
- 标注页数:427页
- 文件大小:163MB
- 文件页数:440页
- 主题词:移动终端-应用程序-程序设计
PDF下载
下载说明
深入解析Android虚拟机PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 Android系统介绍1
1.1 Android是一款智能手机1
1.1.1 什么是智能手机1
1.1.2 当前主流的智能手机系统2
1.2 Android的巨大优势3
1.3 在电脑上启动Android虚拟机4
1.3.1 安装Android SDK4
1.3.2 安装JDK、Eclipse、Android SDK5
1.3.3 设定Android SDK Home12
1.4 Android模拟器13
1.4.1 Android模拟器简介14
1.4.2 模拟器和仿真机究竟有何区别14
1.4.3 创建Android虚拟设备(AVD)14
1.4.4 模拟器的总结16
1.5 搭建环境过程中的常见问题18
1.5.1 不能在线更新18
1.5.2 显示“Project name must be specified”提示20
1.5.3 Target列表中没有Target选项21
第2章 Android系统的结构23
2.1 Android安装文件简介23
2.1.1 Android SDK目录结构23
2.1.2 android.iar及内部结构24
2.1.3 SDK帮助文档25
2.1.4 解析Android SDK实例26
2.2 分析Android的系统架构26
2.2.1 Android体系结构介绍27
2.2.2 Android工程文件结构29
2.2.3 应用程序的生命周期32
2.3 简析Android内核34
2.3.1 Android继承于Linux34
2.3.2 Android内核和Linux内核的区别35
2.4 简析Android源码37
2.4.1 获取并编译Android源码37
2.4.2 Android对Linux的改造38
2.4.3 为Android构建Linux的操作系统39
2.4.4 分析Android源码结构39
2.4.5 编译Android源码44
2.4.6 运行Android源码45
2.5 实践演练——演示两种编译Android程序的方法46
2.5.1 编译Native C的helloworld模块46
2.5.2 手工编译C模块47
第3章 虚拟机概述51
3.1 虚拟机的作用51
3.2 Java虚拟机51
3.2.1 理解Java虚拟机51
3.2.2 Java虚拟机的数据类型52
3.2.3 Java虚拟机的体系结构53
3.2.4 Java虚拟机的生命周期58
3.3 Android虚拟机——Dalvik VM59
3.3.1 Dalvik架构59
3.3.2 和Java虚拟机的差异60
3.3.3 Dalvik VM的主要特征61
3.3.4 Dalvik VM的代码结构61
3.4 Dalvik控制VM详解63
3.5 Dalvik VM架构66
3.5.1 Dalvik的进程管理67
3.5.2 Android的初始化流程67
第4章 编译和调试68
4.1 Windows环境编译Dalvik68
4.2 GDB调试Dalvik71
4.2.1 准备工作71
4.2.2 GDB调试C程序72
4.2.3 GDB调试Dalvik74
4.3 使用dexdump75
4.3.1 dexdump的反编译功能75
4.3.2 使用dexdump查看jar文件76
4.4 Dalvik虚拟机编译脚本80
4.4.1 Android.mk文件80
4.4.2 ReconfigureDvm.mk文件81
4.4.3 dvm.mk文件84
4.5 Android 4.0.1源码下载、模拟器编译和运行85
第5章 Dalvik虚拟机的运作流程88
5.1 Dalvik虚拟机相关的可执行程序88
5.1.1 dalvikvm88
5.1.2 dvz89
5.1.3 app_process90
5.2 Dalvik虚拟机的初始化92
5.2.1 开始虚拟机的准备工作92
5.2.2 初始化跟踪显示系统93
5.2.3 初始化垃圾回收器93
5.2.4 初始化线程列表和主线程环境参数93
5.2.5 分配内部操作方法的表格内存95
5.2.6 初始化虚拟机的指令码相关的内容95
5.2.7 分配指令寄存器状态的内存95
5.2.8 分配指令寄存器状态的内存96
5.2.9 初始化虚拟机最基本用的Java库96
5.2.10 进一步使用的Java类库线程类97
5.2.11 初始化虚拟机使用的异常Java类库99
5.2.12 释放字符串哈希表100
5.2.13 初始化本地方法库的表101
5.2.14 初始化内部本地方法101
5.2.15 初始化JNI调用表101
5.2.16 缓存Java类库里的反射类104
5.2.17 最后的工作106
5.3 启动zygote110
5.3.1 在init.rc中配置zygote启动参数111
5.3.2 启动Socket服务端口111
5.3.3 加载preload-classes113
5.3.4 加载preload-resources114
5.3.5 使用folk启动新进程115
5.4 启动SystemServer进程116
5.4.1 启动各种系统服务线程117
5.4.2 启动第一个Activity119
5.5 class类文件的加载119
5.5.1 DexFile在内存中的映射119
5.5.2 ClassObject——Class在加载后的表现形式121
5.5.3 findClassNoInit——加载Class并生成相应ClassObject的函数122
5.5.4 加载基本类库文件123
5.5.5 加载用户类文件124
5.6 解释执行类124
5.6.1 Dalvik虚拟机字节码和JVM字节码的区别124
5.6.2 Davik虚拟机的解释器优化125
第6章 dex的优化和安全管理127
6.1 Android dex文件优化简介127
6.2 dex文件的格式128
6.2.1 map_list129
6.2.2 string_id_item131
6.2.3 type_id_item135
6.2.4 proto_id_item136
6.2.5 field_id_item137
6.2.6 method_id_item137
6.2.7 class_def_item138
6.3 dex文件结构141
6.3.1 文件头(File Header)142
6.3.2 魔数字段143
6.3.3 检验码字段143
6.3.4 SHA-1签名字段145
6.3.5 map_off字段146
6.3.6 string_ids_size和off字段147
6.4 Android的DexFile接口149
6.4.1 构造函数149
6.4.2 公共方法149
6.5 Dex和动态加载类机制151
6.5.1 类加载机制151
6.5.2 Dalvik虚拟机类加载机制151
6.5.3 具体的实际操作153
6.5.4 代码加密153
6.6 Android动态加载jar和DEX154
6.6.1 Android的动态加载154
6.6.2 演练动态加载154
6.7 dex文件的再优化157
第7章 生命周期管理158
7.1 Android程序的生命周期158
7.1.1 进程和线程158
7.1.2 进程的类型159
7.2 Activity的生命周期160
7.2.1 Activity的几种状态160
7.2.2 分解剖析Activity161
7.2.3 几个典型的场景162
7.2.4 管理Activity的生命周期163
7.2.5 Activity的实例化与启动163
7.2.6 Activity的暂停与继续164
7.2.7 Activity的关闭/销毁与重新运行165
7.2.8 Activity的启动模式166
7.3 Android进程与线程166
7.3.1 进程167
7.3.2 线程167
7.3.3 线程安全的方法167
7.4 测试生命周期168
7.5 Service的生命周期172
7.5.1 Service的基本概念和用途172
7.5.2 Service的生命周期详解172
7.5.3 Service与Activity通信172
7.6 Android广播的生命周期178
7.7 Dalvik的进程管理180
7.7.1 Zygote180
7.7.2 Dalvik的进程模型191
7.7.3 Dalvik虚拟机的进程通信196
第8章 内存分配策略201
8.1 Java的内存分配管理201
8.1.1 内存分配中的栈和堆201
8.1.2 堆和栈的合作204
8.2 运行时的数据区域207
8.2.1 程序计数器(Program Counter Register)208
8.2.2 Java的虚拟机栈VM Stack209
8.2.3 本地方法栈Native Method Stack209
8.2.4 Java堆(Java Heap)210
8.2.5 方法区210
8.2.6 运行时常量池211
8.2.7 直接内存212
8.3 对象访问212
8.3.1 对象访问基础213
8.3.2 具体测试214
8.4 内存泄漏220
8.4.1 内存泄漏的分类221
8.4.2 内存泄漏的定义221
8.4.3 内存泄漏的常见问题和后果221
8.4.4 检测内存泄漏223
8.5 Davlik虚拟机的内存分配223
8.6 分析Dalvik虚拟机的内存管理机制源码225
8.6.1 表示堆的结构体225
8.6.2 表示位图堆的结构体数据226
8.6.3 HeapSource结构体226
8.6.4 和mark bits相关的结构体227
8.6.5 结构体GcHeap228
8.6.6 初始化垃圾回收器230
8.6.7 初始化和Heap相关的信息230
8.6.8 创建GcHeap231
8.6.9 追踪位置233
8.6.10 实现空间分配234
8.6.11 其他模块237
8.7 优化Dalvik虚拟机的堆内存分配242
8.8 查看Android内存泄漏的工具——MAT243
第9章 垃圾收集247
9.1 初探Java虚拟机中的垃圾收集247
9.1.1 何谓垃圾收集247
9.1.2 常见的垃圾收集策略247
9.1.3 Java虚拟机的垃圾收集策略249
9.2 Java虚拟机垃圾收集的算法250
9.2.1 “标记-清除”算法251
9.2.2 复制算法251
9.2.3 标记-整理算法252
9.2.4 分代收集算法253
9.3 垃圾收集器253
9.3.1 Serial收集器254
9.3.2 ParNew收集器255
9.3.3 Parallel Scavenge收集器256
9.3.4 Serial Old收集器256
9.3.5 Parallel Old收集器257
9.3.6 CMS收集器257
9.3.7 G1收集器258
9.3.8 垃圾收集器参数总结259
9.4 Android中的垃圾回收260
9.4.1 sp和wp简析260
9.4.2 详解智能指针(android refbase类(sp和wp))262
9.5 Dalvik垃圾收集的三种算法264
9.5.1 引用计数264
9.5.2 Mark Sweep算法264
9.5.3 和垃圾收集算法有关的函数266
9.5.4 在什么时候进行垃圾回收275
9.5.5 调试信息276
9.6 Dalvik虚拟机和Java虚拟机垃圾收集机制的区别277
第10章 线程管理279
10.1 Java中的线程机制279
10.1.1 Java的多线程279
10.1.2 线程的实现280
10.1.3 线程调度282
10.1.4 线程状态间的转换283
10.1.5 线程安全287
10.1.6 线程安全的实现方法290
10.1.7 无状态类294
10.2 Android的线程模型296
10.2.1 Android的单线程模型297
10.2.2 Message Queue297
10.2.3 AsyncTask298
10.3 分析Android的进程通信机制299
10.3.1 Android的进程间通信(IPC)机制Binder299
10.3.2 Service Manager是Binder机制的上下文管理者301
10.3.3 分析Server和Client获得Service Manager的过程319
第11章 JNI接口323
11.1 JNI技术基础323
11.1.1 JNI概述323
11.1.2 JNI带来了什么323
11.1.3 JNI的结构324
11.1.4 JNI的实现方式325
11.1.5 JNI的代码实现和调用325
11.2 JNI技术的功能326
11.2.1 解决性能问题326
11.2.2 解决本机平台接口调用问题327
11.2.3 嵌入式开发应用327
11.3 在Android中使用JNI328
11.3.1 使用JNI的流程328
11.3.2 使用JNI技术来进行二次封装328
11.3.3 Android JNI使用的数据结构JNINativeMethod330
11.3.4 通过JNI实现Java对C/C++函数的调用331
11.3.5 调用Native(本地)方法传递参数并且返回结果335
11.3.6 使用JNI调用C/C++开发的共享库337
11.3.7 使用线程及回调更新UI341
11.3.8 使用JNI实现Java与C之间传递数据343
11.4 Dalvik虚拟机的JNI测试函数348
11.5 总结Android中JNI编程的一些技巧349
11.5.1 传递Java的基本类型349
11.5.2 传递String参数350
11.5.3 传递数组类型351
11.5.4 二维数组和String数组351
第12章 JIT编译356
12.1 JIT简介356
12.1.1 JIT概述356
12.1.2 Java虚拟机主要的优化技术358
12.1.3 Dalvik虚拟机中JIT的实现359
12.2 Dalvik虚拟机对JIT的支持359
12.3 汇编代码和改动360
12.3.1 汇编部分代码361
12.3.2 对C文件的改动361
12.4 Dalvik虚拟机中的源码分析361
12.4.1 入口文件362
12.4.2 核心函数373
12.4.3 编译文件376
12.4.4 BasicBlock处理387
12.4.5 内存初始化388
12.4.6 对JIT源码的总结392
第13章 异常管理394
13.1 Java中的异常处理394
13.1.1 认识异常394
13.1.2 Java的异常处理机制395
13.1.3 Java提供的异常处理类397
13.2 处理Java异常的方式398
13.2.1 使用try...catch处理异常398
13.2.2 在异常中使用finally关键字399
13.2.3 访问异常信息399
13.2.4 抛出异常400
13.2.5 自定义异常401
13.2.6 Java异常处理语句的规则402
13.3 Java虚拟机的异常处理机制404
13.3.1 Java异常处理机制基础404
13.3.2 COSIX虚拟机异常处理的设计与实现405
13.4 分析Dalvik虚拟机异常处理的源码409
13.4.1 初始化虚拟机使用的异常Java类库409
13.4.2 抛出一个线程异常410
13.4.3 持续抛出进程411
13.4.4 抛出异常名413
13.4.5 找出异常的原因413
13.4.6 清除挂起的异常和等待初始化的异常417
13.4.7 包装“现在等待”异常的不同例外417
13.4.8 输出跟踪当前异常的错误信息418
13.4.9 搜索和当前异常相匹配的方法419
13.4.10 获取匹配的捕获块421
13.4.11 进行堆栈跟踪423
13.4.12 生成堆栈跟踪元素425
13.4.13 将内容添加到堆栈跟踪日志中426
13.4.14 打印输出为堆栈跟踪信息427
热门推荐
- 1302506.html
- 530889.html
- 2608815.html
- 791630.html
- 2405927.html
- 1423602.html
- 1987958.html
- 1409052.html
- 3309372.html
- 398702.html
- http://www.ickdjs.cc/book_3360515.html
- http://www.ickdjs.cc/book_404358.html
- http://www.ickdjs.cc/book_629657.html
- http://www.ickdjs.cc/book_1598541.html
- http://www.ickdjs.cc/book_1438954.html
- http://www.ickdjs.cc/book_374682.html
- http://www.ickdjs.cc/book_131666.html
- http://www.ickdjs.cc/book_2111629.html
- http://www.ickdjs.cc/book_2706830.html
- http://www.ickdjs.cc/book_2356310.html