注:本文基于Android 8.1进行分析。

ART对象分配过程解析——内存分配的准备阶段

本章我们将分析Android 8.1中ART虚拟机的对象创建时内存分配过程的分析。本节将介绍内存分配相关的环境准备及各种跳转逻辑。

我们首先从Thread类开始分析。

Thread类

Thread类的Init()方法会进行线程相关的所有初始化工作,例如,初始化Cpu信息,成员函数InitTlsEntryPoints初始化一个外部库函数调用跳转表。例如,Thread类将外部库函数调用跳转表划分为4个,其中,interpreter_entrypoints_描述的是解释器要用到的跳转表,jni_entrypoints_描述的是JNI调用相关的跳转表,portable_entrypoints_描述的是Portable后端生成的本地机器指令要用到的跳转表,而quick_entrypoints_描述的是Quick后端生成的本地机器指令要用到的跳转表。这些函数跳转入口通过访问线程Thread对应的偏移量进入。

Thread的Init方法:

bool Thread::Init(ThreadList* thread_list, JavaVMExt* java_vm, JNIEnvExt* jni_env_ext) {// This function does all the initialization that must be run by the native thread it applies to.// (When we create a new thread from managed code, we allocate the Thread* in Thread::Create so// we can handshake with the corresponding native thread wh

ART对象内存分配过程解析(上)——内存分配的准备阶段(Android 8.1)相关推荐

  1. 【androidx86 5.1.1】Android HttpClient请求过程解析(上)

    Android HttpClient请求过程解析 前言:很久没有写源码解析相关的文章了,所谓"三天不写,上房揭瓦",这都仨月啦!前段时间忙着发版,经理有别的事情忙,就把管理发版的事 ...

  2. saber软件安装后怎么打开_关于 saber 仿真软件基本应用和案例的详细过程解析(上)...

    * 本文是 21Dianyuan 社区「第八期 DIY 实战经验 • 原创技术分享赛」原创参赛作品,作者奋斗的牛头怪,感谢作者的辛苦付出. 自从接触仿真以后,发现仿真软件这个工具确确实实能对工程师的设 ...

  3. JVM成神路对象内存布局、分配过程、从生至死历程、强弱软件引用

    引言 对象实例的角度,阐述一个Java对象从生到死的历程.Java对象在内存中的布局以及对象引用类型. 一.Java对象在内存中的布局 Java源代码中,使用new关键字创建出的对象实例,我们都知道在 ...

  4. (五)JVM成神路之对象内存布局、分配过程、从生至死历程、强弱软虚引用全面剖析

    引言 在上篇文章中曾详细谈到了JVM的内存区域,其中也曾提及了:Java程序运行过程中,绝大部分创建的对象都会被分配在堆空间内.而本篇文章则会站在对象实例的角度,阐述一个Java对象从生到死的历程.J ...

  5. java创建对象时分配内存方式,是堆上分配还是栈上分配?

    创建对象的内存是分配在堆上还是栈上面?大部分童鞋的回答是这样的:"肯定分配在堆内存的嘛,栈内存是属于子线程和基本数据类型专用的内存空间,怎么会分配到栈上面呢?",这个回答嘛,也对, ...

  6. G1垃圾收集器之对象分配过程

    本文来说下G1垃圾收集器之对象分配过程 文章目录 概述 小对象 大对象 本文小结 概述 G1的年轻代由eden region 和 survivor region 两部分组成,新建的对象(除了巨型对象) ...

  7. 启动期间的内存管理之初始化过程概述----Linux内存管理(九)

    转载地址:https://blog.csdn.net/gatieme/article/details/52403148 日期 内核版本 架构 作者 GitHub CSDN 2016-09-01 Lin ...

  8. Android Dalvik、ART及APK编译过程

    强烈建议看罗升阳大神的文章,五年过去,回头看,真的还是经典啊,不要认为几年前的文章没有价值,看一看就知道 妙啊: https://blog.csdn.net/Luoshengyang/article/ ...

  9. java什么是对象如何创建对象_java对象的创建过程是什么

    java对象的创建过程: 类加载检查-->分配内存-->初始化零值-->设置对象头-->执行init方法 具体如下: 1.类加载检查 虚拟机遇到一条new指令时,先检查这个指令 ...

最新文章

  1. 四十三、文件存储空间管理
  2. 安卓开发笔记(二十七):实现轮播文字消息
  3. UA MATH567 高维统计 专题0 为什么需要高维统计理论?——协方差估计的高维效应与Marcenko-Pastur规则
  4. 一文回顾阿里云弹性计算云栖大会精彩看点
  5. vs2008界面查看
  6. spring之二——使用maven创建一个java project
  7. [渝粤教育] 西南科技大学 经济法概论 在线考试复习资料2021版(3)
  8. 小程序 - swiper除了左右切换还有上下滚动超出屏幕的内容
  9. php中mimes函数,wordpress函数check_upload_mimes()用法示例
  10. java中criteria类_java – Criteria API:按类类型过滤
  11. LeetCode(620)——有趣的电影(MySQL)
  12. 求求了!让 Python 的热搜消失吧!!
  13. 【愚公系列】2022年10月 微信小程序-电商项目-收货地址功能实现
  14. 基于MATLAB的AM信号调制解调代码,代码)基于MATLAB的AM调制解调系统仿真报告
  15. [STL]priority_queue多种方式自定义排序
  16. SAP中一次性客户及供应商的应用浅晰
  17. mysql中column的用法_关于MySQL的一些用法
  18. D. Three Religions
  19. SSHD服务的搭建与管理
  20. 服务器c盘怎么删除临时文件,删除临时文件夹中临时文件的方法

热门文章

  1. (C++)输入一个年份和一个月份,输出这一年这个月有多少天。
  2. 巨人Access数据库压缩器官方版
  3. 开发一番赏盲盒小程序怎么抽才能一发入魂呢
  4. day008--mysql中的字符串函数
  5. html中引用本电脑没有的字体
  6. 从中国经济现状看未来股市
  7. 曾经的CIH病毒威震天下,快看看这V1.5版本的代码
  8. java毕业设计房产中介系统(附源码、数据库)
  9. 河道治理漂浮物识别监测系统 yolov7
  10. mysql免费管理工具2017_15个MySql(其他数据库)管理工具