Android Runtime (ART) 和 Dalvik,面试字节跳动两轮后被完虐

2.2.9 同步方面的改进

2.2.10 更快速的原生方法

3. 内存管理

3.1 ART GC 概览

3.2 垃圾回收

3.3 共享内存

3.4 分配与回收应用内存

3.5 限制应用内存

3.6 切换应用

相关推荐

Java 垃圾回收(GC)

Java 类加载器

Android Apk 的打包过程

Android 65536解决方案


1. Dalvik

==========

Dalvik是Google公司自己设计用于Android平台的虚拟机。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex 格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。

在 Android L (Android 5.0) 之前叫作 DVM,5.0 之后直接删除DVM,代替它的是传闻已久的ART(Android Runtime)

在整个 Android 操作系统体系中,ART 位于下图黄色小方块位置:

不是说被删除就无用了,咱们毕竟做这一行的还是要简单的了解一下。

1.1 Dalvik 和 JVM 区别


  • Dalvik 基于寄存器,而 JVM 基于栈。

  • 基于寄存器的虚拟机对于更大的程序来讲,在它们编译的时候,花费的时间更短。

  • JVM字节码中,局部变量会被放入局部变量表中,继而被压入堆栈供操做码进行运算,固然JVM也能够只使用堆栈而不显式地将局部变量存入变量表中。

  • Dalvik字节码中,局部变量会被赋给65536个可用的寄存器中的任何一个,Dalvik指令直接操做这些寄存器,而不是访问堆栈中的元素。

1.2 Dalvik 如何运行 java


  • VM字节码由.class文件组成,每一个文件一个class。

  • JVM在运行的时候为每个类装载字节码。相反的,Dalvik程序只包含一个.dex文件,这个文件包含了程序中全部的类。

  • Java编译器建立了JVM字节码以后,Dalvik的dx编译器删除.class文件,从新把它们编译成Dalvik字节码,而后把它们写进一个.dex文件中。这个过程包括翻译、重构、解释程序的基本元素(常量池、类定义、数据段)。

  • 常量池描述了全部的常量,包括引用、方法名、数值常量等。

  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值