[Java、Android面试]_21_Dalvik VM与JVM的区别

news/2024/5/5 0:10:22

欢迎查看合集:
Java、Android面试高频系列文章合集

文章目录

    • 1. 结构
    • 2. 编译
    • 3. 运行环境
    • 4. Dalvik进程管理

Dalvik是android系统中的虚拟机,JVM是java虚拟机。
Dalvik VM可以支持将已转化为.dex文件格式的java应用程序的运行,.dex是专为Dalvik VM设计的一种压缩格式,适合内存和处理器有限的系统。它和JVM的区别在于:

本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。
整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注+收藏

1. 结构

JVM是基于堆栈结构,Dalvik VM是基于寄存器的虚拟机.
基于寄存器的虚拟器对于大程序来说,编译时间更短。在JVM中,局部变量被放入局部变量表,继而被压入堆栈供操作码进行运算(当然JVM也可以只是用堆栈而不显式的将局部变量存入局部变量表);Dalvik字节码中,局部变量会被赋予到65536个可用的寄存器中的任何一个,Dalvik指令直接操作这些寄存器,而不是访问堆栈中的元素。

2. 编译

JVM: .java > .class > .jar
Dalvik VM: .java > .dex > .odex
JVM是使用的java字节码(.class文件),而Dalvik是使用的Dalvik字节码(.dex文
件)

3. 运行环境

Dalvik 虚拟机是 Android 系统中的一个组件,是用于执行 App 的字节码的运行环境。每个 App 都运行在自己独立的 Dalvik 虚拟机进程中。

当用户启动一个 App 时,Android 系统会为该 App 分配一个独立的进程,并在该进程中创建一个 Dalvik 虚拟机实例。

4. Dalvik进程管理

dalvik进程管理是依赖于linux的进程体系结构的,如要为应用程序创建一个进程,它会使用linux的fork机制来复制一个进程(复制进程往往比创建进程效率更高)。

Zygote是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,它通过init进程启动。首先会孵化出System_Server(android绝大多系统服务的守护进程,它会监听socket等待请求命令,当有一个应用程序启动时,就会向它发出请求,zygote就会FORK出一个新的应用程序进程).每当系统要求执行一个android应用程序时,Zygote就会运用linux的FORK进制产生一个子进程来执行该应用程序。

需要注意的是,从 Android 5.0(Lollipop)开始,Android 系统的默认运行时环境由 Dalvik 转变为 ART(Android Runtime)。ART 与 Dalvik 相比,引入了 Ahead-Of-Time(AOT)编译技术,将应用程序的字节码预先编译为本地机器码,从而进一步提高应用程序的性能。但是,App 与 ART 的关系和 App 与 Dalvik 的关系类似,每个 App 仍然运行在自己独立的 ART 虚拟机进程中。


http://www.mrgr.cn/p/11836846

相关文章

数据结构系列-堆排序当中的T-TOK问题

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 之前我们讲到了堆排序的实现逻辑,那么接下来我们重点关注的就是其中的T-TOK问题 T-TOK说简单点,就是说,假如有10000个数据(随机的…

揭开ChatGPT面纱(3):使用OpenAI进行文本情感分析(embeddings接口)

文章目录 一、embeddings接口解析二、代码实现1.数据集dataset.csv2.代码3.运行结果 openai版本1.6.1 本系列博客源码仓库:gitlab,本博客对应文件夹03 在这一篇博客中我将使用OpenAI的embeddings接口判断21条服装评价是否是好评。 首先来看实现思路&am…

golang学习笔记(defer基础知识)

什么是defer defer语句用于golang程序中延迟函数的调用, 每次defer都会把一个函数压入栈中, 函数返回前再把延迟的函数取出并执行。 为了方便描述, 我们把创建defer的函数称为主函数, defer语句后面的函数称为延迟函数。延迟函数…

重回铁王座!时隔5年!Quill 2.0 终于发布啦

2024年4月17日,Quill 2.0 正式发布🎉期待了5年,我怀着激动的心情立马升级体验了下,本文我就带大家一起看看 Quill 2.0 有哪些重大更新。你好,我是 Kagol。 2024年4月17日,Quill 2.0 正式发布🎉 最后一个 1.0 版本 1.3.7 发布于 2019年9月9日,时隔4年零7个月。 富文本…

Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图

Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图 Acrobat、After Effects、Animate、Audition、Bridge、Character Animator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、Lightroom Classic、Media Encoder、Photoshop、Premiere Pro、Adobe XD 请…

Git之merge与rebase操作命令及问题

背景:之前一直使用的是 merge 来实现两分支的合并代码操作,遇到冲突,解决完冲突从头 add 、commit 、push 再次操作一遍提交操作就没啥事了。但后来的大型项目是 多人协同开发,前端带头人提议倡导使用 rebase 来合并分支&#xff…

推荐|免费ssl通配符证书https通配符证书平台,性价比超高的证书

在网络安全日益重要的今天,选择一个可靠的SSL证书平台至关重要。Spug证书平台以其高性价比、专业服务、便捷操作,以及独有的无限免费通配符证书申请功能,成为了您的理想选择。 网址:ssl.spug.cc 为什么选择Spug证书平台?免费通配符:支持免费申请通配符证书,为您的多子站…

Pytorch手撸Attention

Pytorch手撸Attention 注释写的很详细了,对照着公式比较下更好理解,可以参考一下知乎的文章 注意力机制 import torch import torch.nn as nn import torch.nn.functional as Fclass SelfAttention(nn.Module):def __init__(self, embed_size):super(S…

架构师核心-云计算云上实战(云计算基础、云服务器ECS、云设施实战、云上高并发Web架构)

文章目录 云计算基础1. 概念1. 云平台优势2. 公有云3. 私有云4. IaaS、PaaS、SaaS 2. 云设施1. 概览2. 核心组件 云服务器ECS1. ECS介绍1. 简介2. 组件3. 概念4. 图解5. 规格6. 场景 2. ECS服务器开通1. 开通服务器2. 连接服务器 3. 云部署准备1. 1Panel介绍2. 安装1Panel3.安全…

读天才与算法:人脑与AI的数学思维笔记09_分形

分形1. 分形 1.1. 1904年,瑞典数学家科赫(Helge von Koch)首次发表了雪花图案的结构——科赫曲线(又称雪花曲线),它被认为是一种数学怪胎,一种奇怪的人工构造 1.1.1. 但实际上并不是,自然界中到处都是以分形结构存在着的图形 1.1.2. 既不能说科赫曲线是一维的,也不能说…

C/C++程序设计实验报告4 | 函数实验

本文整理自博主本科大一《C/C程序设计》专业课的课内实验报告,适合C语言初学者们学习、练习。 编译器:gcc 10.3.0 ---- 注: 1.虽然课程名为C程序设计,但实际上当时校内该课的内容大部分其实都是C语言,C的元素最多可能只…

[转帖] 银河麒麟系统安全机制-KYSEC

https://zhuanlan.zhihu.com/p/349663329 麒麟系统为什么称为国内最安全的Linux系统?秘密就在于KYSEC,麒麟系统安全机制。一般情况下Linux下默认的接入控制是DAC,其特点是资源的拥有者可以对他进行任何操作(读、写、执行)。当一个进程准备操作资源时,Linux内核会比较进程…

[转帖]数据库系列之简要对比下GaussDB和OpenGauss数据库

https://blog.csdn.net/solihawk/article/details/134939941GaussDB作为一款企业级的数据库产品,和开源数据库OpenGauss之间又是什么样的关系,刚开始接触的时候是一头雾水,因此本文简要对比下二者的区别,以加深了解。 1、GaussDB和OpenGauss数据库简要对比 GaussDB是华为基…

分布式与一致性协议之CAP(二)

CAP CAP不可能三角 CAP不可能三角是指对于一个分布式系统而言,一致性、可用性、分区容错性指标不可兼得,只能从中选择两个, 如图所示。CAP不可能三角最初是埃里克布鲁尔(Eric Brewer)基于自己的工程实践提出的一个猜想,后被塞斯吉…

如何在CentOS搭建docker compose ui可视化工具并无公网IP远程管理容器

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

在一台笔记本电脑上试用Ubuntu22.04

在一台笔记本电脑上试用Ubuntu22.04。 本来想看以下该操作系统能否识别笔记本电脑上的硬盘,于是下载试一下。选了一个国内镜像网站下载。下载速度很快。下载以后用软件win image 将下载的iso文件写到U盘上,用的是usb2.0的U盘,该操作用时11分…

【八股】计算机网络篇

网络模型 应用层【HTTP👉报文/消息】 传输层【TCP或UDP👉段👉MSS】网络层【IP、寻址和路由👉MTU】 ①IP(Internet Protocol,网际协议)主要作用是定义数据包的格式、对数据包进行路由和寻址&…

9.Eureka服务发现+Ribbon+RestTemplate服务调用

order-service服务通过服务名称来代替 ip:port的方式访问user-service服务的接口。 原来的请求代码: Service public class OrderServiceImpl implements OrderService {Autowiredprivate OrderMapper orderMapper;Autowiredprivate RestTemplate restTemplate;Ov…

深度学习中的熵、交叉熵、相对熵(KL散度)、极大释然估计之间的联系与区别

熵的最初来源于热力学。在热力学中,熵代表了系统的无序程度或混乱程度,也可以理解为系统的热力学状态的一种度量。后来被广泛引用于各个领域中,如信息学、统计学、AI等,甚至社会学当中。接下来将大家领略一下深度学习中熵的应用。…

npm、yarn与pnpm详解

🔥 npm、yarn与pnpm详解 🔖 一、npm 🔍 简介: npm是随Node.js一起安装的官方包管理工具,它为开发者搭建了一个庞大的资源库,允许他们在这个平台上搜索、安装和管理项目所必需的各种代码库或模块。 &#…