- Magic Number: "art\n" (0x0A747261)
- Version: 当前版本号 (如 101)
- OAT Checksum: boot.oat 的 SHA-1 校验和
- Image Begin: 镜像加载基地址
- Image Size: 总大小 (~40-80MB)
- OAT File Begin: 对应 OAT 文件地址
- Patch Delta: 地址重定位增量
📦 boot.art
堆快照文件 (Heap Snapshot)
堆快照文件 (Heap Snapshot)
Image Header (镜像头)
Image Roots (根对象区)
- DexCaches[]: DEX 文件缓存数组
- ClassRoots[]: 核心类对象根引用
- ClassLoader: 启动类加载器
- SpecialRoots: 特殊对象(如 OutOfMemoryError)
Class Objects (类对象区)
- Class Metadata: 类的完整元数据
- VTable: 虚方法表 (Virtual Method Table)
- IFTable: 接口方法表
- Fields Layout: 字段布局信息
- Access Flags: 访问标志 (public/final/etc)
- Super Class: 父类引用
- Class Loader: 所属类加载器
String Pool (字符串常量池)
- Interned Strings: 系统级驻留字符串
- Hash Table: 快速查找哈希表
- UTF-16 Data: 实际字符数据
- String Count: ~50,000+ 字符串
Static Fields (静态字段区)
- Primitive Values: 基本类型静态字段
- Object References: 对象引用型静态字段
- 已初始化状态: 所有 <clinit> 已执行
- 示例: String.CASE_INSENSITIVE_ORDER
Object Graph (对象图谱)
- Object Headers: GC 标记位、类型指针
- Reference Chains: 对象间引用链
- Array Objects: 预分配数组对象
- 总对象数: ~100,000+ 对象
⚙️ boot.oat
ELF 可执行文件 (Native Code)
ELF 可执行文件 (Native Code)
ELF Header (ELF 文件头)
- Magic: 0x7F 'E' 'L' 'F'
- Class: ELFCLASS64 (64位)
- Machine: EM_AARCH64 (ARM64)
- Entry Point: 入口地址
- Section Headers: 段表偏移
OAT Header (OAT 专有头)
- Magic: "oat\n" (0x0A74616F)
- Version: OAT 格式版本
- Image Checksum: boot.art 校验和
- DEX File Count: 包含的 DEX 数量
- Instruction Set: ARM64/x86_64
- Compiler Filter: speed/space/etc
.text 段 (代码段)
- Machine Code: AOT 编译的 ARM64 指令
- Method Code: 每个方法的本地代码
- Trampoline: 跳转桩代码
- Optimizations: 内联、循环优化
- Size: ~30-50MB
- Permissions: R-X (只读可执行)
.rodata 段 (只读数据)
- String Literals: 代码中的字符串常量
- Jump Tables: switch 语句跳转表
- Exception Tables: 异常处理表
- Debug Info: 调试信息(符号表)
.data.bimg.rel.ro (镜像引用表)
- Class Pointers: 指向 boot.art 中类对象
- String Pointers: 指向字符串池
- Static Field Refs: 静态字段引用
- 需要重定位: 加载时基地址修正
Symbol Table (符号表)
- Method Symbols: 方法名 → 地址映射
- Class Symbols: 类名 → 元数据映射
- External Symbols: 外部库符号
- Dynamic Linking: 动态链接信息
Inline Cache (内联缓存)
- Type Profiles: 多态调用点类型信息
- Receiver Types: 接收者类型集合
- Devirtualization: 虚调用优化