首先你必须对java虚拟机中常用的一款有深入的了解,比如Hotspot。

然后你再了解下android系统和Dalvik。

Dalvik 与 传统jvm的差别还是很大的,总结来说,我个人把其归纳为三大类:

(1).传统jvm是基于栈的,而Dalvik基于寄存器的。如果你了解Hotspot,你发现每一个方法对应栈帧,每一条指令都是基于栈的操作,基于栈,那么很多都是进栈和出栈的造作,那么造就了指令很多。基于寄存器就是数据直接存储在寄存器上,然后直接读取数据进行操作,没有数据创建之后的进栈操作和出栈操作。

(2)传统的jvm是执行class文件,而dalvik却是执行dex文件,在android应用打包的时候,实质上是依据dx工具将class文件打包成dex文件(是class文件的压缩),dex文件直接被dalvik加载。

(3).在android系统中,每一个app对应一个dalvik,一个应用,一个虚拟机实例,一个进程(所有android应用的线程都是对应一个linux线程,都运行在自己的沙盒中,不同的应用在不同的进程中运行。每个android dalvik应用程序都被赋予了一个独立的linux PID(app_*))。常量池已被修改为只使用32位的索引,以 简化解释器。dalvik的堆和栈的参数可以通过-Xms和-Xmx更改。

Java虚拟机和Dalvik(android)虚拟机的区别相关推荐

  1. 【Java 虚拟机原理】动态字节码技术 | Dalvik ART 虚拟机 | Android 字节码打包过程

    文章目录 一.动态字节码技术 二.Dalvik & ART 虚拟机 三.Android 字节码打包过程 总结 一.动态字节码技术 动态字节码技术 就是在 运行时 , 动态修改 Class 字节 ...

  2. Android 虚拟机技术为何至今依旧 “屹立不倒” ?

    前言 我从事 Android 也有些年头了,大多时候都在跟项目,写写业务代码,很少花时间去研究关于 Android 开发基础方面的东西,时至今日我却越发明白了底层逻辑和基础知识才是进阶更加高阶 And ...

  3. Android安全与逆向之Java虚拟机和Dalvik虚拟机的区别

    Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野.它对内存的高效使用,和在低速CPU上表现出的高性能,确实令 ...

  4. (Android)java虚拟机和Dalvik虚拟机的区别

    Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野.它对内存的高效使用,和在低速CPU上表现出的高性能,确实令 ...

  5. android -------- java虚拟机和Dalvik虚拟机

    2019独角兽企业重金招聘Python工程师标准>>> java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体 ...

  6. Java虚拟机和Dalvik虚拟机的区别

    java虚拟机和Dalvik虚拟机的区别 该文章是本人转载的,觉得写的不错,和大家分享一下 Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvi ...

  7. java dalvik_Java虚拟机和Dalvik虚拟机的区别

    java虚拟机和Dalvik虚拟机的区别: java虚拟机 Dalvik虚拟机 java虚拟机基于栈. 基于栈的机器必须使用指令来载入和操作栈上数据,所需指令更多更多 dalvik虚拟机是基于寄存器的 ...

  8. dalvik虚拟机与Java区别_05 Android---java虚拟机跟dalvik虚拟机的区别(从01开始点点入门,视频+笔记)...

    大家好,我是森森 这节课我简单给大家介绍一下java虚拟机跟安卓系统虚拟机的区别.可能时间太晚了,有点不在状态,也有点紧张,大家见谅. 05java虚拟机跟dalvik虚拟机的区别 这篇文章重点写一写 ...

  9. JAVA虚拟机、Dalvik虚拟机和ART虚拟机

    从Android5.0开始废弃了Dalvik,全面推行ART. Dalvik与ART的区别 (1)在Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行 ...

  10. 5分钟了解Android虚拟机Dalvik和ART,让手机告别卡顿!

    Android虚拟机 一.Dalvik虚拟机 1.DVM与JVM的主要区别 1)架构不同 2)执行字节码不同 3)DVM的预加载-共享机制 2.DVM的运行时堆 1)Zygote Space 2)Ca ...

最新文章

  1. GNOME 的新夜灯功能旨在帮助你睡得更好
  2. 【译】理解JavaScript中的柯里化
  3. 很好的linux启动说明( bootsect.S、setup.S、head.S)
  4. 【AI杂谈】从一篇参考文献比正文还长的文章,杂谈深度学习综述
  5. windows adb shell 乱码
  6. 概要设计实例_尽可能通用的运维CMDB的设计与实践
  7. MySQL - 视图
  8. 吴恩达深度学习 —— 3.11 随机初始化
  9. 深入kubernetes之Pod——一pod多容器
  10. go 的基本数据类型
  11. 二维\三维绘图AutoCAD 2022 for Mac
  12. 图解MySQL的各种 JOIN,看完不懂来找我!
  13. Atiitt 软件设计之道 attilax著 1. 总概念 隶属于软件工程。。 2 2. 需求分析 3 3. 设计分类 3 3.1. 按照力度 总体设计架构设计 概要设计 详细设计 3 3.2.
  14. triu matlab,matlab triu
  15. 是时候让打字更“快舒”了-小鹤双拼
  16. 微信支付接口 java服务器,JAVA微信支付接口开发——支付(示例代码)
  17. Unity资源加载简析(二)AssetsBundle
  18. 新兴基金经理凯瑟琳·伍德ARKK基金在 2022 年初遭受新的打击
  19. 导弹气动估算matlab,基于Fluent的导弹气动特性计算
  20. 拼多多分享好友砍价Java实现_拼多多砍价怎么发到qq?怎么帮好友砍价?

热门文章

  1. ubuntu下sublime中修改字体
  2. 大话数据结构12 串String
  3. springboot:记录jdbc
  4. Java核心技术笔记 异常、断言和日志
  5. nginx proxy cache配置参数解读
  6. 最小硬盘实现单原子信息存储 超现有硬盘500倍
  7. c++和java的类转换的区别
  8. 机器人学 —— 机器人视觉(极几何)
  9. MariaDB10 主从配置
  10. win8.1注册表-修改资源管理器的默认路径regedit