art

2024/4/12 15:46:42

Android ART Oat文件格式简析(下)

在上篇中,我们分析到了OatFile的begin_和end_变量分别被指定到了符号oatdata和oatlastword指定的位置。那么指定的这一段数据到底是什么呢?本文会接下来分析。 首先来看OatFile::Setup的实现: bool OatFile::Setup() {if (!GetOatHeader().I…

Android 创建线程源码分析 JavaThreadNativeThread

前言 本文分析在Android中创建线程时候的源码分析,即JavaThread和NativeThread。 java/lang/Thread.java art/runtime/native/java_lang_Thread.cc art/runtime/thread.cc 两种Java Thread 有两种可以运行Java代码的线程。有两种情况: 通过new Thread创建的java线程在Nati…

《深入理解 Android ART 虚拟机》笔记

Dex文件格式、指令码 一个Class文件对应一个Java源码文件,而一个Dex文件可对应多个Java源码文件。开发者开发一个Java模块(不管是Jar包还是Apk)时: 在PC平台上,该模块包含的每一个Java源码文件都会对应生成一个同文件…

Android ART虚拟机 GC的各种类型

前言 本文介绍ART虚拟机的GC类型,为下篇介绍ART的GC做准备。 GcRetentionPolicy 每个Space都有自己的gc回收策略,如下图所示: kGcRetentionPolicyNeverCollect:不需要回收某个Space所包含的垃圾对象(因为该Space可…

YAHFA--ART环境下的Hook框架

原文地址:YAHFA--ART环境下的Hook框架 本人针对理解,研究了作者的代码,进行了详细解析,见: 在Android Dalvik时代,最流行的Hook框架非Xposed莫属了。各种功能强大的Xposed插件极大地丰富了Android的可玩性&…

Android ART运行环境下Image文件格式简析

可以通过阅读代码来帮助分析Image文件的格式。 首先,在art\runtime\Image.h文件中,有相关的定义: byte magic_[4]; byte version_[4];// Required base address for mapping the image. uint32_t image_begin_;// Image size, not page alig…

Android虚拟机

文章目录JVM结构解析编译流程类加载器加载流程JVM内存管理Java栈区本地方法栈方法区堆区垃圾收集算法引用的类型垃圾回收算法触发回收Dalvik与JVM的不同ART比Dalvik的优势总结JVM结构解析 编译流程 类加载器 加载流程 Loading:类的信息从文件中获取并且载入到JVM的内…

Android ART Oat文件格式简析(上)

前面写了一篇博客大致描述了一下Image文件的结构,本文将接下来简单描述一下Oat文件的大致结构。 和前面一样,还是来看一下代码,代码非常复杂,为了保证大家不分心,我会尽量去除一些冗余的部分,只留下主体部…

Android ART虚拟机 堆Heap类构造函数

前言 本文主要介绍Heap的构造函数,从构造函数里大量使用各种Space,可以看出ART虚拟机的一个重要的特点就是大量使用映射内存。主要代码在art/runtime/gc/heap.cc里。 第一部分 主要完成了boot镜像所需art文件的加载,然后得到一系列的Image…

Android ART虚拟机 Space类体系

前言 在ART虚拟机实现中,内存分配和释放的算法是封装在不同的Space中来完成的。而外部使用者只能借助Space及派生类的接口来完成内存的分配与释放。通过阅读这些Space的实现,可以看出ART虚拟机的一个重要的特点就是大量使用映射内存,相较于D…

安卓VM总结

0. 前言Dalvik是Google公司自己设计用于Android平台的虚拟机。Dalvik经过优化,使其更适合Android平台。具体优点会在下面和JVM进行比较时说明。 2014年6月谷歌I/O大会,Android L 改动幅度较大,Google将直接删除Dalvik,代替它的是传…

Android 虚拟机

文章目录 Android 虚拟机Java虚拟机基于栈的虚拟机栈的执行流程 Dalvik虚拟机基于寄存器的虚拟机寄存器的执行流程Java虚拟机与Dalvik虚拟机区别 ART虚拟机Android 7.0的运行方式 Android 虚拟机 Java虚拟机 基于栈的虚拟机 每一个运行时的线程,都有一个独立的栈…

ART虚拟机(一)—— Dalvik 与ART概念

目录 一 前言 二 简单理解 三 官方文档 四 其他可进一步熟悉Dalvik和ART的博客 一 前言 本系列文章记录对ART虚拟机学习过程中的一些资料记录,及个人对虚拟机的一些理解。 二 简单理解 Dalvik 与ART的区别:https://www.zhihu.com/question/294061…