文章目录

  • 一、类加载时机
    • 1、隐式加载
    • 2、显式加载
  • 二、类加载步骤

一、类加载时机


1、隐式加载

类加载 的 隐式加载 , 没有明确的说明加载某个类 , 但是进行了如下操作 :

  • 使用 new 关键字 直接 创建类的实例对象 ;
  • 使用 new 关键字 直接 创建类的 子类 实例对象 ;
  • 通过 反射方式 创建 类 / 子类 实例对象 ;
  • 访问 类的 静态变量 , 对静态变量 进行 读 或者 写 操作 都会触发 隐式加载 ;
  • 访问 类的 静态函数 ;

2、显式加载

显式加载 : 明确的说明要加载某个类 ,

  • 使用 Class.forName() 加载指定的类 ;
  • 使用 ClassLoader.loadClass 加载指令的类 ;

二、类加载步骤


参考 【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 ) 博客 ;

类加载步骤 :

  • ① 装载 : 加载某个类时 , 首先要 查找 并 导入 Class 字节码文件 ;
  • ② 链接 : 该阶段 , 可以分为以下 333 个子阶段 ;
    • 验证 : 验证字节码文件是否正确 ;
    • 准备 : 为 静态变量 划分内存空间 , 并进行默认值赋值 ;
    • 解析 : 将 " 常量池 " 中的 " 符号引用 " 转为 " 直接引用 " ;
  • ③ 初始化 : 调用 clinit 函数 , 初始化 静态变量 静态代码块 ;

【Android 逆向】类加载器 ClassLoader ( 类加载时机 | 隐式加载 | 显示加载 | 类加载步骤 | 装载 | 链接 | 初始化 )相关推荐

  1. 【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 拷贝 DEX 文件到内置存储 | 加载并执行 DEX 字节码文件 )

    文章目录 一.拷贝 Assets 目录下的 classes.dex 字节码文件到内置存储区 二.加载 DEX 文件并执行其中的方法 三.MainActivity 及执行结果 四.博客资源 一.拷贝 A ...

  2. 【Android 逆向】类加载器 ClassLoader ( Android 的八种类加载器 | ClassLoader | BaseDexClassLoader | DexClassLoader )

    文章目录 一.Android 类加载器 1.ClassLoader 抽象类 2.BootClassLoader 3.BaseDexClassLoader 4.PathClassLoader 5.Dex ...

  3. 【Android 逆向】类加载器 ClassLoader ( 启动类加载器 | 扩展类加载器 | 应用类加载器 | 类加载的双亲委托机制 )

    文章目录 一.类加载器 二.类加载的双亲委托机制 一.类加载器 Java 虚拟机 ClassLoader 类加载器 : Bootstrap ClassLoader : 启动类加载器 , 该 加载器由 ...

  4. java classloader详解_Java类加载器(ClassLoader)详解

    本文主要讲述Java ClassLoader的工作原理,这为后面将Android App代码热替换或者插件化升级做铺垫 一. 类加载器 ClassLoader即常说的类加载器,其功能是用于从Class ...

  5. Java虚拟机学习 - 类加载器(ClassLoader)

    类加载器 类加载器(ClassLoader)用来加载 class字节码到 Java 虚拟机中.一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源文件在经过 Javac之后就被转换成 ...

  6. java类加载器_类加载器ClassLoader

    上篇文章说到,Class类可以通过一个类的全限定名去加载类,那么底层是如何去加载的呢?这就是我们今天要聊的类加载器ClassLoader,其可以通过一个类的全限定名来获取描述此类的二进制字节流,也即是 ...

  7. 第五章 类加载器ClassLoader源码解析

    说明:了解ClassLoader前,先了解 第四章 类加载机制 1.ClassLoader作用 类加载流程的"加载"阶段是由类加载器完成的. 2.类加载器结构 结构:Bootstr ...

  8. JVM之类加载器ClassLoader

    JVM之类加载器ClassLoader 本文目录 JVM简介 类加载器解析 1. JVM简介 ①. JVM是运行在操作系统之上的,它与硬件没有直接的交互 ②. JVM体系结构概览 注: 2. 类装载器 ...

  9. 类加载器ClassLoader的角色

    类加载器ClassLoader的角色

最新文章

  1. Windows Phone 7 开发之:工具栏
  2. Orace 数据字典表前缀 解释。
  3. 关于 jquery select2 多个关键字 模糊查询的解决方法
  4. 聚类(Clustering):hierarchical clustering 层次聚类及其应用
  5. 7、JS面向对象编程之继承
  6. Java 中接口 interface 实例介绍
  7. 药盒识别/垃圾分类—高精度AI模型训练及边缘部署分享
  8. linux 0755,linux audit审计(7-1)--读懂audit日志
  9. VC++实现自定义切换按钮
  10. 随笔(1)——慢性意识障碍患者的智慧诊疗和远程管理
  11. 怎样使用BMFont生成fnt字体
  12. 【DSP】TMS320C64x系列--SPRU871参考手册--中断控制器部分
  13. 记一次失败的 ThoughtWorks 面试经历
  14. BCR-ABL融合基因及检测
  15. 腾讯云公网IP网络带宽收费价格表2023更新
  16. GeoServer发布OSM地图
  17. 谢烟客-----Linux的发展史
  18. 斐波那契数列——输出斐波那契数列的第n项
  19. eclipse MAVEN插件正确使用方式。
  20. sockaddr_in和sockaddr区别

热门文章

  1. aptana studio 3 汉化
  2. Spring IOC 注入方式
  3. iOS开发那些事--iOS6 UI状态保持和恢复
  4. 七问唐骏:真的性格好就能成功?
  5. promise 实现依次循环 请求数据
  6. python 函数部分
  7. [POJ 2329] Nearest number-2
  8. github上手实践教程
  9. redirect_uri参数错误解决方法
  10. 产品经理提升修炼的方法