在Android中一个方法在art中对应一个ArtMethod,ArtMethod中保存着方法的 类、访问权限和执行地址等信息。
在Android6.0中,art虚拟机的ArtMethod的结构是这样的:/art/runtime/art_method.h class ArtMethod中成员变量

Art 与AOT

art 可以采用 解释模式 或者 AOT模式执行。
解释模式就是取出dex code,逐条解释执行。这个时候回取这个方法的entry_point_from_interpreter_然后跳转执行。
AOT模式是”Ahead of time”,在安装时将dex code 优化成机器码,运行时直接执行机器码执行。调用这个方法时会调用entry_point_from_quick_compiled_code_,然后跳转执行。

只要替换上面两个指针就可以实现热替换了吗?

答案肯定不是的,因为无论是解释模式还是AOT执行当中还会用到ArtMethod中的其他字段。比如dex_cache_resolved_methods_,比如AOT模式下虽然已经编译成机器码,但是机器码是不能脱离虚拟机单独运行的。例如在AOT模式下调用一个方法时,获得ArtMethod中dex_cache_resolved_methods_,这是一个存放ArtMethod*的指针数组,通过它可以获得ArtMethod所在dex所有Method对应的ArtMethod*。

虚拟机调用方法之ArtMethod相关推荐

  1. JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈

    运行时数据区概述及线程概述 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JV ...

  2. [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义...

    前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine  ,既然是虚拟机, ...

  3. Java虚拟机调用jni_JNI攻略之十一――启动虚拟机调用java类

    JNI攻略之十一――启动虚拟机调用java类 江苏无锡缪小东 一.一个简单的java程序 下面是一个简单的java程序!主要是供虚拟机直接调用的!我们可以编写任意的java程序,然后在c中调用虚拟机执 ...

  4. java虚拟机调用linux_Java虚拟机字节码执行引擎

    定义 Java虚拟机字节码执行引擎是jvm最核心的组成部分之一,它做的事情很简单:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果.在不同的虚拟机实现里,执行引擎在执行java代码 ...

  5. 关于反射调用方法的一个log

    [Loaded sun.reflect.GeneratedMethodAccessor197 from __JVM_DefineClass__]  请问报这个是什么意思? 这是Sun实现的Java标准 ...

  6. java调用怎么调用方法区_Java中的方法调用有多昂贵

    java调用怎么调用方法区 我们都去过那儿. 在查看设计不良的代码的同时,听听作者对人们永远不应该牺牲性能而不是设计的解释. 而且,您不能说服作者摆脱其500行方法,因为链接方法调用会破坏性能. 好吧 ...

  7. Spring中利用applicationContext.xml文件实例化对象和调用方法

    Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...

  8. php帝国系统调出图片内空,帝国CMS图集字段的大图,小图,说明的调用方法

    本文实例讲述了帝国CMS图集字段的大图,小图,说明的调用方法.分享给大家供大家参考.具体方法如下: 复制代码代码如下: $arr = array(); $arr = $navinfor['morepi ...

  9. dede列表分页php,dede列表页分页英文调用方法

    使用于英文模板的dede分页代码,可以让分页默认中文变成英文的方式. 修改arc.listview.class.php 在include/arc.listview.class.php 调用方法 {de ...

最新文章

  1. UVa11300 - Spreading the Wealth
  2. 新闻上的文本分类:机器学习大乱斗
  3. dedecms织梦模板修改专题路径的方法
  4. Difference between expressions and statements?
  5. python工程师认证证书_python工程师-day83
  6. 工程师男友如何反窃听?趣聊密码学入门科普
  7. libevent源码学习-----阅读心得
  8. linux定时任务crond
  9. NETINT刘迅思:底层软件开发向上层应用靠拢
  10. guice 实例_使用Google Guice消除实例之间的歧义
  11. 基于drools_Drools:基于PHREAK堆栈的评估和向后链接
  12. mysql 删除表记录的 存储过程命令_用SQL语句删除一个数据库的所有表和所有存储过程...
  13. 列举至少五个python内置函数和使用方法_Python内置函数 next的具体使用方法 Python中seek和next区别...
  14. 【转载】Weka入门教程
  15. centos安装python3.5_CentOS 7安装Python3.5
  16. oracle 中查找不连续的数的最前一个值
  17. 数组索引越界异常和空指针异常
  18. Linux的iio数据流程,linux iio子系统
  19. linux自动清理磁盘日志的一种方案
  20. 【图像识别】基于卷积神经网络实现手写汉字识别附matlab代码

热门文章

  1. 【python辅助excel】(3)
  2. 梦想与行动:仰望星空,脚踏实地
  3. Proxmox VE(PVE) 安装 网心云
  4. 线性代数-矩阵知识点总结
  5. 简约手绘大数据动态PPT模板
  6. Android camera角度问题
  7. 二的负三次方php中怎么表示什么,(-2)的负平方 (-3)的负三次方 是什么意思 各等于多少...
  8. SQL Server创建表语句介绍
  9. 学习js第十五天~ jq动画方法
  10. 数字信号处理-07-DDS IP应用实例