【Android 逆向】类加载器 ClassLoader ( 类加载时机 | 隐式加载 | 显示加载 | 类加载步骤 | 装载 | 链接 | 初始化 )
2023-09-14 09:07:29 时间
一、类加载时机
1、隐式加载
类加载 的 隐式加载 , 没有明确的说明加载某个类 , 但是进行了如下操作 :
- 使用
new
关键字 直接 创建类的实例对象 ; - 使用
new
关键字 直接 创建类的 子类 实例对象 ; - 通过 反射方式 创建 类 / 子类 实例对象 ;
- 访问 类的 静态变量 , 对静态变量 进行 读 或者 写 操作 都会触发 隐式加载 ;
- 访问 类的 静态函数 ;
2、显式加载
显式加载 : 明确的说明要加载某个类 ,
- 使用
Class.forName()
加载指定的类 ; - 使用
ClassLoader.loadClass
加载指令的类 ;
二、类加载步骤
参考 【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 ) 博客 ;
类加载步骤 :
- ① 装载 : 加载某个类时 , 首先要 查找 并 导入 Class 字节码文件 ;
- ② 链接 : 该阶段 , 可以分为以下
3
3
3 个子阶段 ;
- 验证 : 验证字节码文件是否正确 ;
- 准备 : 为 静态变量 划分内存空间 , 并进行默认值赋值 ;
- 解析 : 将 " 常量池 " 中的 " 符号引用 " 转为 " 直接引用 " ;
- ③ 初始化 : 调用 clinit 函数 , 初始化 静态变量 静态代码块 ;
相关文章
- Android本地数据存储: Reservoir
- [Android Pro] Android7.0系统 关于Android获取流量计数TrafficStats.getUidRxBytes(uid)和TrafficStats.getUidTxBytes(uid)返回-1解决方案
- android系统签名及修改
- Android 10 AMS中拉起系统应用服务以及遇到问题点
- Android 获取当前页面的activity和包
- Android Studio 报 非法字符: ‘ufeff‘解决
- Android 9.0 10.0 11.0 开机动画支持mp4 视频播放
- Android 9.0 recovery 菜单页跳过弹窗自动 WIPE_DATA(恢复出厂设置)
- Android RTMP推拉流,MediaCodec硬件编解码
- 【Android 安全】DEX 加密 ( Proguard 简介 | 默认 ProGuard 分析 )
- android假设重写onDraw实现一个相似TextView能够显示表情和链接的控件(一)
- android 自定义控件 使用declare-styleable进行配置属性(源码角度)
- Android定时器AlarmManager(定时发送广播)
- 【Android入门】4、数据持久化:文件、SharedPreferences 和 Sqlite
- android intent打开各种文件(txt、apk、ppt、xls和doc)的方法,下面有代码 直接运行
- Android 10.0 Settings 关掉开发者模式