美文网首页
JVM、DVM、ART

JVM、DVM、ART

作者: 饭勺 | 来源:发表于2021-03-17 15:48 被阅读0次

一、JVM、JRE、JDK

JVM:Java Virtual Machine。java虚拟机是一个翻译器,把Class字节码翻译成机器识别的代码语言。这是翻译java的基础,根据操作系统的不同翻译成不同操作系统的语言,最终调用操作系统上的函数。这是java跨平台的基础。

JRE:Java Runtime Environment。java运行环境,包含了JVM,除此之外还提供了很多的类库,这些是JRE提供的基础类库,实际是一些jar。这是开发java 的基础。

JDK提供java编译工具、调试工具、反编译工具、打包工具: javac(编译代码)、java、jar (打包代码)、javap(反编译<反汇编>)等。这个就是JDK。

所以,JRE是java运行基础,jdk提供工具支持,jvm提供翻译能力。

JVM的执行过程
Java 程序通过 javac 编译成 .class 文件,然后 JVM 将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数,调用操作系统函数。

二、DVM

DVM:Dalvik Virtual Machine。
DVM实现了JVM规范,可运行在Android环境中,DVM和JVM有一些不同点:
1.JVM运行class字节码,DVM执行dex文件--dex文件是class文件压缩处理后的文件
2.JVM的指令集基于堆栈,DVM的指令集基于寄存器--寄存器相当于将局部变量表和操作数栈合并了

基于寄存器的虚拟机栈会更加高效一点,少了局部变量与操作数栈的交互过程。直接在寄存器中完成数据交互。
基于寄存器的虚拟机中没有操作数栈,但是有很多虚拟寄存器。
其实和操作数栈相同,这些寄存器也存放在运行时栈中,本质上就是一个数组。
与JVM相似,在DVM中每个线程都有自己的PC和调用栈,方法调用的活动记录以帧为单位保存在调用栈上。

3.DVM从Android 2.2版本开始,支持JIT即时编译(Just In Time)。在程序运行的过程中进行选择热点代码(经常执行的代码)进行编译或者优化。直接编译成机器码。也就是解释执行+JIT。

三、ART

ART :Android Runtime
Android 4.4 中引入的一个开发者选项,也是 Android 5.0 及更高版本的默认 Android 运行时。ART相当于是DVM的升级版。

JVM执行class字节码,DVM执行dex文件,ART虚拟机执行的是本地机器码。

DVM在安装过程会执行odex优化,也就是将dex文件优化成odex
Android5.0:ART采用预先编译机制,在安装时对dex文件执行AOT预编译操作,采用dex2oat 工具将dex编译为oat本地机器码,这是个耗时的过程,所以实际上Android5.0后面的版本,安装过程就变慢了。
Android7.0:ART采用混编方式,安装过程不进行AOT预编译操作,在程序运行过程中,对经常访问的方法进行JIT,并记录到Profile配置文件中,在空闲时通过编译守护进程对Profile配置文件下的代码进行AOT预编译,等到运行时就直接使用执行。

相关文章

  • JVM DVM ART

    一.Java -> JVM JAVA为每一个平台开发一个 JVM,即 Java 虚拟机。Java 编译器将 .ja...

  • JVM、DVM、ART

    一、JVM、JRE、JDK JVM:Java Virtual Machine。java虚拟机是一个翻译器,把Cla...

  • 虚拟机

    java运行环境为jvm,安卓运行环境为dvm(Dalvik VM)或avm(Art VM) jvm基于栈(内存)...

  • DVM, ART, Dalvik, JVM

    转载自:https://www.jianshu.com/p/923aebd31b65https://www.jia...

  • Android 知识:JVM、DVM、ART的区别

    JVM、DVM、ART的区别 Android底层学习必须要了解一下java的虚拟机JVM,以及Android的虚拟...

  • 虚拟机

    前言 本篇文章将会介绍Java虚拟机(JVM)的结构等基础知识、Dalvik(DVM)/ART虚拟机与JVM的比较...

  • 虚拟机概述

    前言 本篇文章将会介绍Java虚拟机(JVM)的结构等基础知识、Dalvik(DVM)/ART虚拟机与JVM的比较...

  • 简单聊聊JVM,DVM,ART

    哈喽,大家好,这次我们来聊聊JVM和Andorid虚拟机的一些知识点。希望大家在看了文章后能对JVM,Dalvik...

  • Android动态加载技术基础之JVM,DVM,ART的区别

    JVM和DVM的区别 DVM和 JVM 执行的字节码文件的区别JVM执行的字节码文件是.class文件,而DVM上...

  • JVM DVM ART介绍与区别

    JVM DVM ART java中内存: 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控...

网友评论

      本文标题:JVM、DVM、ART

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