Android面试 虚拟机相关

作者: 一个有故事的程序员 | 来源:发表于2022-03-17 10:54 被阅读0次

面试问题

  • Jvm,Dalvik与Art三者之间的区别
  • 那dex和class到底在结构上有什么区别呢
  • Android虚拟机中寄存器起什么作用,与栈的区别在哪里
  • Arm指令究竟是什么指令,能说说他与字节码指令的区别吗
  • 为什么Art虚拟机比Dalvik虚拟机运行速度高

Jvm,Dalvik与Art三者之间的区别

JVM虚拟机与Android虚拟机区别:

  • Android虚拟机执行的是.dex格式文件 jvm执行的是.class文件。
  • class文件存在很多的冗余信息,dex工具会去除冗余信息。
  • Android虚拟机是基于寄存器的虚拟机 而jvm执行是基于虚拟栈的虚拟机
    Art虚拟机与Dalvik虚拟机区别:
  1. Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行,这虽然会使安装过程比较快,但是会拖慢应用以后每次启动的效率。
  2. 而在ART 环境中,应用在第一次安装的时候,字节码就会预编译(AOT)成机器码,这样的话,虽然设备和应用的首次启动(安装慢了)会变慢,但是以后每次启动执行的时候,都可以直接运行,因此运行效率会提高。
  3. ART占用空间比Dalvik大(字节码变为机器码之后,可能会增加10%-20%),这也是著名的“空间换时间大法"。
  4. Art预编译也可以明显改善电池续航,因为应用程序每次运行时不用重复编译了,从而减少了 CPU 的使用频率,降低了能耗。

那dex和class到底在结构上有什么区别呢

  1. dex文件减少整体的文件尺寸 dex更像是一种压缩文件,一次可以表示更多的class。class像是一种单个文件。
  2. Android虚拟机加载类时 只对dex需要一次IO可以加载很多新类,而class需要加载多次IO,Android虚拟机提高查找速度。
  3. dex指令更加密集,class指令比较多。
  4. dex 寄存器设计方便寻址,class java栈需要更多次load与store指令。
  5. dex适合于移动设备,性能不太高的要求。class适合PC大内存,单指令小的情况下可以快速执行。

Android虚拟机中寄存器起什么作用,与栈的区别在哪里

看看现在的实际处理器,大多都是基于寄存器的架构,从侧面反映出它比基于栈的架构更优秀。
一般认为基于寄存器的架构对VM来说也是更快的,虽然没有地址(无变量声明)指令更紧凑,但完成操作需要更多的load/store指令,也意味着更多的指令分派(instruction dispatch)次数与内存访问次数;访问内存是执行速度的一个重要瓶颈,Android虚拟机的二地址或三地址指令虽然每条指令占的空间较多,但总体来说可以用更少的指令完成操作,指令分派与内存访问次数都较少。

Arm指令究竟是什么指令,能说说他与字节码指令的区别吗

  1. 字节码指令和Arm指令内容是不一样。
  2. arm指令是由arm公司开发的,指令含有地址,而字节码没有地址。
  3. 字节码指令是sun公司开发,简单高效。

为什么Art虚拟机比Dalvik虚拟机运行速度高

  1. 在Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行,这虽然会使安装过程比较快,但是会拖慢应用以后每次启动的效率。而在ART 环境中,应用在第一次安装的时候,字节码就会预编译(AOT)成机器码,这样的话,虽然设备和应用的首次启动(安装慢了)会变慢,但是以后每次启动执行的时候,都可以直接运行,因此运行效率会提高。
  2. ART占用空间比Dalvik大(字节码变为机器码之后,可能会增加10%-20%),这也是著名的“空间换时间大法"。
  3. 预编译也可以明显改善电池续航,因为应用程序每次运行时不用重复编译了,从而减少了 CPU 的使用频率,降低了能耗。

表现结果:

  • 系统性能的显著提升
  • 应用启动更快、运行更快、体验更流畅、触感反馈更及时
  • 更长的电池续航能力
  • 支持更低的硬件

更多内容戳这里(整理好的各种文集)

相关文章

  • Android面试 虚拟机相关

    面试问题 Jvm,Dalvik与Art三者之间的区别 那dex和class到底在结构上有什么区别呢 Android...

  • Suffering is the most powerful t

    Android面试相关 程序猿面试葵花宝典 Android面试题集 网易Android面试 乐视、美团,京东等面试...

  • Need Note Link

    Android 2.2 中文 Api 农民伯伯的博客 面试相关 面试相关1(内有干货链接)吧主 面试相关2(面试题...

  • 面试总结Android

    下面是啊最近几次面试总结:面试分类为三个方面 android相关 java相关 其他 Android相关 1.四大...

  • BiBi - Android VM -0- 开篇

    BiBi - Android VM - XXX 系列是对【罗升阳】关于Android虚拟机相关博客进行的总结。没有...

  • android面试相关

    1.Activity生命周期 相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,...

  • Android面试相关

    link 杭州找 Android 工作的点点滴滴 《Android 开发工程师面试指南》 亲爱的面试官,这个我可没...

  • Android面试相关

    Android基础 1、什么是ANR 如何避免它?如果耗时操作需要让用户等待,那么可以在界面上显示进度条。2、Vi...

  • [Android]面试相关

    并行和并发有什么区别 并行:多个处理器或多核处理器同事处理多个任务。并发:多个任务在同一个CPU核上,按细分的时间...

  • 面试-Android相关

    Android 基础知识 View绘制流程 Touch事件分发 自定义组件流程 动画相关 Activity生命周期...

网友评论

    本文标题:Android面试 虚拟机相关

    本文链接:https://www.haomeiwen.com/subject/rxuzqrtx.html