Dalvik虚拟机相关的可执行程序

第三章 Dalvik 可执行格式与字节码规范 文章目录Dalvik 虚拟机Dalvik 虚拟机特点Dalvik 虚拟机与 Java 虚拟机的区别运行的字节码不同Dalvik 可执行文件体积更小虚拟机架构不同实例分析上述实例Java 字节码Dalvik 字节码虚拟机的执行流程虚拟机的执行方式Dalvik 语言基础Dalvik 指令格式位描述指令格式标识Dalvik 指令语法说明DEX 反汇编工具使用 dexdump 进行反汇编使用 baksma... 阅读详情

当Java程序运行时,都是一个虚拟机解释java的字节码,将这些字节码翻译成本地CPU的指令吗,然后执行。对Java程序而言,负责解释并执行的就是一个虚拟机。

       dalvikvm的作用就是创建一个虚拟机并执行参数中指定的Java类,说明该程序的使用方法:

    1.首先新建一个名为Foo.java的文件

          class Foo{

                     public static void main(String[] args){

                                sysout("hello dalvik");

                        }

              }

   2.然后编译文件Foo.java并生成Jar文件

               javac Foo.java

               $Path=

               $dx --dex --output=foo.jar Foo.class

dx工具的作用是将.class转换为.dex文件,因为Dalvik虚拟机所执行的程序不是标准的Jar文件,而是将Jar文件转换以提高执行效率,而转换后的文件就是dex文件。

2.dvz

    dvz的作用是从Zygote进程中孵化出一个新的进程,新的进程也是一个Dalvik虚拟机。

    1.dvz -classpath 包名称 类名

    我们不能再函数Main()内部构造一个Welcome对象的方法达到运行该APK的目的。

3. app_process

   Framwork在启动时需要加载并运行如下两个类:

     ZygoteInit.java   SystemServer.java ,系统提供了一个app_process进程,该进程会自动运行这两个类,app_process的本质就是使用dalvikvm启动ZygoteInit.java。并在启动收加载Framework中的大部分类和资源。

2.接下来app_process中是如何创建虚拟机并执行指定的class文件的。其源代码在文件frameworks/base/cmds/app_main.cpp中,该文件中的关键代码又两处:

1.先创建一个AppRutime对象

2.调用runtime的start()方法指定的class

Java Dalvik简要学习总结 1概要 Dalivik虚拟机有两个堆,包括zygote堆和Active 堆,前者是不太变化的,是从父进程公用的相同物理内存的堆,因为很少发生写操作在这个堆上,所以写时复制机制不会发生在这个堆上,这也是android运行时比较巧妙的地方。 Live Heap Bitmap 和 Mark Heap Bitmap 这两个位图是是java垃圾回收机制的关键,用来标记java对象是否被引用的, 可以映射最... 阅读详情

相关推荐

Android Dalvik虚拟机的启动过程源码分析

从前面的调用过程可以知道,参数array指向的是全局变量gRegJNI所描述的一个JNI方法注册函数表,其中,每一个表项都用一个RegJNIRec对象来描述,而每一个RegJNIRec对象都有一个成员变量mProc,指向一个JNI方法注册函数。这一步执行完成之后,Dalvik虚拟机的创建和初始化工作就完成了,回到前面,即AndroidRuntime类的成员函数start中,接下来就会调用AndroidRuntime类的另外一个成员函数startReg来注册Android核心类的JNI方法。

结合项目案例,记录点点滴滴,自己回顾,分享他人o__o 9112

dalvik对于Java方法调用的实现

<br />(入口一)字节码OP_INVOKE_ (汇编实现)<br />1.dvmResolveMethod:(C函数)决议方法的Method :方法名字字符串找ClassObject中Method<br />2.(设置调用环境)创建一个方法调用栈帧(设置参数)<br />3.分支----(汇编)<br />->本地方法:nativeFunc(C函数)<br />   ...........<br />   ...........<br />->Java方法:(1)设置interpState(字节码)初始

tuhuolong的专栏 2932

MediaCodec视频解码流程详解及参考demo

本文主要讲解mediacodec的视频解码流程,及demo参考例子。

分享音视频技术 7875

Dalvik可执行格式和字节码规范

<<Android软件安全权威指南>>笔记 第三章 Dalvik可执行格式与字节码规范 早期Android是Dalvik虚拟机,Android4.4以后,引入ART(Android Runtime)虚拟机 JIT(Just-In-Time)即时编译,AOT(Ahead-Of-Time)预先编译 ART提供对Dalvik的可执行格式与字节码的支持 Dalvik虚拟机 特点 专有DEX(Dalvik Executable)可执行文件格式 常量池32位索引 基于寄存器架构,完整指令系统 D

z1nk的博客 1353

基于MediaPipe的智能俯卧撑计数与姿势矫正系统

在现代健身和体能训练中,俯卧撑是最基础也是最有效的自重训练动作之一。然而,许多人在进行俯卧撑训练时常常存在姿势不正确、计数不准确等问题。本文将介绍如何利用计算机视觉和姿态估计技术,开发一个智能的俯卧撑计数与姿势矫正系统。

qq_36224726的博客 916

BUUCTF--[OGeek2019]babyrop

才学习了基本的ROP流程,到处找题练,不过也没做出来几道题,以这道32位的题作为例题吧。 这道题是BUUCTF上pwn练习题里的[OGeek2019]babyrop。 代码审计 老规矩先checksec一下: 没有canary保护,nx保护开启排除shellcode可能性,FULL RELEO为地址随机化。 观察主函数,先设定了一个闹铃,到时间就会强制退出程序,解除闹铃的方法在上一篇博客中提到过了, 这道题中闹铃函数依然对我们解题起不到什么干扰作用。 主函数的思路大概是:生成一个随机数,把这个随机数作为

N1rvana的博客 6007

Framework的启动过程---Dalvik虚拟机相关的可执行程序

Dalvik dalvik/dalvikvm dvz dalvik/dvz app_process frameworks/base/cmds/app_process

zxiaoy的专栏 747

深度学习Halcon中GPU显存利用率高,但GPU、CPU利用率较低,导致模型训练速度很慢,通过设置硬件参数的解决方法

深度学习Halcon中GPU显存利用率高,但GPU、CPU利用率较低,导致模型训练速度很慢,通过设置硬件参数的解决方法 前言 在训练自己模型的时候,会遇到GPU显存利用率高,但GPU、CPU利用率较低,导致模型训练速度很慢的问题。这个问题一方面是由于硬件没有设置到最佳工作状态,另一方面是代码中参数没有设置好。最近在跑Halcon DL遇到这个问题,而Halcon不像开源的几个框架那样自由,代码封装的比较多。所以遇到这种问题,只能在参数最优的情况下,通过设置硬件参数来提升性能。 当然,在跑DL之前,无论什么框

ZiLiangQin的博客 9914

Android Framework的启动概述

安卓系统中运行的第一个Dalvik虚拟机叫做zygote,意思是“卵”。这“卵”还是挺有用的,因为接下来所有的Dalvik虚拟机进程都是这个“卵”孵化出来的。 zygote进程中包含两个主要模块,分别如下: 1、Socket服务端。用于接收启动新的Dalvik进程的命令。 2、Framework共享类及共享资源。当zygote进程启动后会加载一些共享的类及资源,其中共享类是在preload-...

淡淡的宁静的博客 176

文石NoteX3国行版安装 Google Play经验分享

文石NoteX3国行版安装 Google Play经验分享。

2301_80693261的博客 7603

vue3+element-plus - 最新详细实现将表格Table组件 “所见所得导出“ 为excel(xls/xlsx)电子表格文件,表格中的图片图像、图标等媒体资源完美导出显示(详细示例代码)

vue3,nuxt3,element plus,表格组件,Table,el-table,导出,下载,excel,电子工作簿,xls,xlsx,将表格导出成xls,如何把表格原封不动的导出成excel,保留图片,带图片,图标,如何导出包括含有图片的Excel表格,图片和表格数据导出excel,把表格导出成excel格式,表格内的图片一起导出,vue3导出图片和数据到Excel,可导出图片,导出图像到Excel,网页上的图片怎么能导出到xls表格中,显示图片url链接,图片太多导出失败,图片会超出单元格,图片不

✅ 精选推荐文章 4766

android 底层课程试题,Android底层试题

Android 底层课程试题一、选择题(共15题,每题2分)1. Android系统中,有关框架层的代码应该在以下哪个目录中(D )A. lib B. device C. hardware D. frameworks2. Dalvik虚拟机可执行程序的文件格式为( B)A.xx.class B. xx.dex C. xx.bin JDK里面的 D. xx.out...

weixin_28956181的博客 150

AI视频生成工作流开发:从产品拆解到带货视频全流程实现

本文介绍了一套完整的AI视频生成工作流开发方案,该系统能够自动分析产品素材并生成9个标准化分镜,支持白底图智能替换,最终输出专业带货视频。系统基于Coze平台搭建,整合豆包大模型及多模态生成模型,实现从产品分析、脚本生成到视频合成的全流程自动化。关键模块包括产品特征提取、智能分镜分配、视觉内容生成和用户交互调整,支持手动优化提示词和输出结果。该方案采用模块化设计,结合多种AI模型协同工作,为电商视频制作提供高效解决方案。

huanghm88的专栏 384

Dalvik虚拟机的启动过程分析

在Android系统中,应用程序进程都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的。Zygote进程在启动时会创建一个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程时,都会将这个Dalvik虚拟机实例复制到新的应用程序进程里面去,从而使得每一个应用程序进程都有一个独立的Dalvik虚拟机实例。在本文中,我们就分析Dalvik虚拟机在Zygote进程中的启动过程。

老罗的Android之旅 7万+

手把手教你完成YOLOv8 PyQt5和PySide6目标检测界面搭建,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。YOLO系列模型由于其高效的检测速度和较高的准确率,成为目标检测任务的首选算法之一。本项目结合 YOLOv8 与 PyQt5,构建了一个图形化界面,便于用户进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测,不仅可以用于大论文的工作量展示,还可以作为毕业设计。支持目标检测、目标分割等模型进来检测

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android ART运行时无缝替换Dalvik虚拟机的过程分析

Android 4.4发布了一个ART运行时,准备用来替换掉之前一直使用的Dalvik虚拟机,希望籍此解决饱受诟病的性能问题。老罗不打算分析ART的实现原理,只是很有兴趣知道ART是如何无缝替换掉原来的Dalvik虚拟机的。毕竟在原来的系统中,大量的代码都是运行在Dalvik虚拟机里面的。开始觉得这个替换工作是挺复杂的,但是分析了相关代码之后,发现思路是很清晰的。本来就详细分析这个无缝的替换过程。

老罗的Android之旅 9万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Dalvik 和 ART虚拟机

1. Dalvik 虚拟机 Dalvik 虚拟机(Dalvik Virtual Machine),简称 Dalvik VM 或者 DVM。它是 Google 专门为 Android 平台开发的虚拟机,运行在 Android 运行时库中。DVM 并不是一个 Java 虚拟机,原因如下。 1.1 DVM 与 JVM 的区别 DVM 没有遵循 JVM 规范来实现,与 JVM 主要区别如下: 1. 基于的架构不同 JVM 的执行的指令是基于栈结构,这就意味着需要去栈中读写数据,所需的指令会很多,会导致速度

wangbuji的博客 1719

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android虚拟机 —— Dalvik 和 ART

Dalvik 虚拟机 (Dalvik Virtual Machine ), 简称 **Dalvik VM** 或者 **DVM**。DVM 是 Google专门为Android平台开发的虚拟机,它运行在Android运行时库中。每一个应用程序对应有一个单独的Dalvik虚拟机实例。

xiaokangss的博客 3742
上一篇: Dalvik Vm架构
下一篇: 开始虚拟机的准备工作
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值