《深入解析Android虚拟机》是一本循序渐进地讲解Android虚拟机系统的基本知识的书籍。本书详细剖析了Android虚拟机系统的内存管理和运作流程,使读者对其整个进程有了更深入的了解。本书还对虚拟机系统的优化和异常处理等重要知识进行了详细讲解,给读者提供了一定的参考价值。如果你对Android虚拟机感兴趣,推荐阅读本书。
深入解析Android虚拟机电子书
读者评价
唯一的优点可能也就是书厚点。 里面的内容感觉就像是哪里找来的资料拼凑在一起,读起来没有任何逻辑感,每个知识点介是介绍了一下,就是说的不清不楚的,反正你也理解不了。
代码偏多,适合注重实现的人,不太适合想了解设计架构的初学者。
内容介绍
内容简介Android系统从诞生到现在的短短几年时间里,凭借其易用性和开发的简洁性,赢得了广大开发者的支持。在整个Android系统中,DalvikVM一直是贯穿从底层内核到高层应用开发的核心。本书循序渐进地讲解了Android虚拟机系统的基本知识,并剖析了其整个内存系统的进程和运作流程,并对虚拟机系统优化和异常处理的知识进行了详细讲解。本书几乎涵盖了DalvikVM系统的所有主要内容,并且讲解方法通俗易懂,特别有利于读者学习并消化。本书适合Android初学者、Android底层开发人员、源代码分析人员和虚拟机开发人员学习,也可以作为大专院校相关专业师生的学习用书和培训学校的教材。
目录
- 第1章 获取并编译Android源码 1
- 源码 1
- 源码 2
- 第2章 Java虚拟机基础 19
- 第3章 Dalvik和ART基础 40
- 第4章 分析JNI 52
- Java对象 60
- 对象 60
- 转换 67
- 第5章 分析内存系统 71
- 机制Binder 71
- 机制的上下文管理者 72
- 第6章 Android程序的生命周期管理 115
- 重新运行 121
- 第7章 IPC进程通信机制 147
- 上下文管理者 148
- 第8章 init进程详解 171
- 第9章 Dalvik VM的进程系统 202
- 工作 216
- 第10章 Dalvik VM运作流程详解 259
- 简介 259
- 执行过程 260
- 环境参数 263
- 内存 264
- 的内容 264
- 内存 264
- 和ZUI基本用的Java库 265
- 线程类 266
- Java类库 267
- 参数 276
- 加载后的表现形式 283
- ClassObject的函数 283
- 第11章 DEX文件详解 285
- 第12章 Dvlik VM内存系统详解 310
- 第13章 Dalvik VM垃圾收集机制 328
- 区别 348
- 第14章 Dalvik VM内存优化机制详解 350
- 第15章 分析Dalvik VM的启动过程 369
- 实例 376
- 方法 382
- 钩子 385
- 第16章 注册Dalvik VM并创建线程 387
- 第17章 Dalvik VM异常处理详解 407
- 处理机制 410
- 设计与实现 410
- 源码 414
- Java类库 414
- 初始化的异常 420
- 不同例外 420
- 信息 421
- 方法 421
- 日志中 426
- 日志中 427
- 异常类 428
- 类型转换异常 428
- 字符串转换为数字类型时
- 抛出的异常 428
- 堆栈 431
- 第18章 JIT编译 434
- 技术 436
- 第19章 Dalvik VM内存优化 463
- 解析查询 464
- 工具——MAT 475
- 方法 478
- 引起内存泄漏的不良代码 480
- 关闭游标 481
- 缓存的convertView 481
- recycle()释放内存 482
- 代码优化及检测 489
- 第20章 Dalvik VM性能优化 491
- 加密优化 493
- 技术 497
- 第21章 分析ART的启动过程 508
- 第22章 执行ART主程序 534
- 第23章 安装APK应用程序 549
- 第24章 ART环境安装APK应用程序 572
每次都看见有虚拟机的相关知识,看了一些大神的博客,决定整理一个自己看的懂得笔记,真的大篇大篇的文字我在电脑上看着眼睛累 JVM:JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才能够运行Java程序 jvm是吧.java文本编译成.class字节码文件,在执行java程序的时候,类加载器把需要的类全部加载到内存当中去 DVM:而DVM就是Dalvik Virtual Machine,是安卓中使用的虚拟机,所有安卓程序都运行在安卓系统进程里,每个进程对应着一个Dalvik虚拟机实例 .dex文件就是把多个class文件中的常量、方法等放到一起 以下图片可以看出两者不同 ①JAVA虚拟机运行的是JAVA字节码,Dalvik虚拟机运行的是Dalvik字节码 ②Dalvik可执行文件体积更小(原因:为了减小执行文件的体积,安卓使用Dalvik虚拟机,SDK中有个dx工具负责将JAVA字节码转换为Dalvik字节码,dx工具对JAVA类文件重新排列,将所有JAVA类文件中的常量池分解,消除其中的冗余信息,重新组合形成一个常量池,所有的类文件共享同一个常量池,使得相同的字符串、常量在DEX文件中只出现一次,从而减小了文件的体积)
众所周知,Android系统是以Linux为内核构建的。Google为了降低应用的开发难度,并将其适配到不同硬件配置的设备上,在Linux内核之上构建了一个虚拟机,Android应用使用java开发,运行在虚拟机之上。 Dalvik就是Android4.4及之前使用的虚拟机,它使用的是JIT(Just-In-Time)技术来进行代码转译,每次执行应用的时候,Dalvik将程序的代码编译为机器语言执行。随着硬件水平的不断发展以及人们对更高性能的需求,Dalvik虚拟机的不足日益突出。而应运而生的ART(Android RunTime)虚拟机,其处理机制根本上的区别是:它采用AOT(Ahead-Of-Time)技术,会在应用程序安装时就转换成机器语言,不再在执行时解释,从而优化了应用运行的速度。在内存管理方面,ART也有比较大的改进,对内存分配和回收都做了算法优化,降低了内存碎片化程度,回收时间也得以缩短。
Dalvik虚拟机基本知识介绍 Dalvik基本概念 Dalvik虚拟机是Android程序的虚拟机,其指令集基于寄存器架构,执行其特有的文件格式——dex字节码,主要负责完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。 android使用的Java代码,跟Java 虚拟机类似,是Android中Java程序的运行基础。 但是dalvik虚拟机与Java虚拟机有较大区别: 1)、dalvik基于寄存器,而JVM基于stack 2)、Dalvik执行的是特有的DEX文件格式,而JVM运行的是*.class文件格式。 优势: 1)、在编译时提前优化代码而不是等到运行时 2)、 虚拟机很小,使用的空间也小;被设计来满足可高效运行多种虚拟机实例。 3)、常量池已被修改为只使用32位的索引,以 简化解释器