Skip to content

Latest commit

 

History

History
78 lines (45 loc) · 3.55 KB

2016-03-27.md

File metadata and controls

78 lines (45 loc) · 3.55 KB

2016-03-27

DVM

Dalvik虚拟机,是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即“Dalvik Executable”)格式的Java应用程序的运行。.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。

大多数虚拟机包括JVM都是一种堆栈机器,而Dalvik虚拟机则是寄存器机。两种架构各有优劣,一般而言,基于堆栈的机器需要更多指令,而基于寄存器的机器指令更长。

安装到行动设备之时,Dalvik可执行文件可能会被修改。为了获得进一步优化,虚拟机可能会调整文件内部分数据的端序、内联一些函数和简单的结构体、并短路掉一些不必要的操作。

当Android启动时,Dalvik VM监视所有的程序(APK),并且创建依存关系树,为每个程序优化代码并存储在Dalvik缓存中。Dalvik第一次加载后会生成Cache文件,以提供下次快速加载,所以第一次会很慢。

开启线程有哪些方法?是么情况下使用Thread?什么情况下使用Runnable?

  1. 写一个类继承Thread,复写run方法,使用start开启线程.
  2. 实现runnable接口,将实现的对象传递给Thread的构造方法,再使用start开启线程.

在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:
(1)避免点继承的局限,一个类可以实现多个接口。
(2)适合于资源的共享

Diff in Library and Framework

A library performs specific, well-defined operations.

A framework is a skeleton where the application defines the "meat" of the operation by filling out the skeleton. The skeleton still has code to link up the parts but the most important work is done by the application.

Examples of libraries: Network protocols, compression, image manipulation, string utilities, regular expression evaluation, math. Operations are self-contained.

Examples of frameworks: Web application system, Plug-in manager, GUI system. The framework defines the concept but the application defines the fundamental functionality that end-users care about.

JVM and DVM

JVM编译后文件格式 .java->.class->.jar Dalvik VM编译后文件格式 .java->.class->.dex->.odex JVM基于架构 基于栈的架构 Dalvik VM 基于寄存器的架构

  1. 架构不同:JVM使用栈架构;Dalvik使用的是寄存器,数据是加载到CUP的寄存器上的。
  2. JVM加载的.class文件,Dalvik加载的是.dex文件,对内存的分配情况做了优化。