OOM 分析
OOM 详情
OOM 详情是当前设备发生 OOM 异常事件的详情信息,详情页面区分 Android 和 iOS 操作系统。
说明:OOM 仅支持 Java 及 OC 的代码,包含 Android、iOS、HarmonyOS 3.0,Android 目前暂不支持 非 Java 实现 Hybrid 应用。
Android系统
环境信息
包含以下信息:
- User ID
- 应用启动时间
- 异常发生时间
- 会话时长
- DeviceID
- 应用版本
- 设备型号
- 操作系统
- 地域
- 运营商
- 接入方式
- 设备内存
- 应用占用内存(百分比)
- 剩余内存(百分比)
- 剩余存储空间(百分比)
- CPU型号
- CPU指令集
- UI朝向
持有对象(根因分析)
首先查看Retained Heap,如果Retained Heap特别大,而自身的Shallow Heap比较小,说明持有的对象没有及时的释放,此时需要查找响应类中的哪些大的对象没有释放内存,导致GC无法回收内存。
包含以下指标:
- Object(对象):格式为「对象Class名+内存地址」或「对象数组+内存地址」
- Ref.Objects:对象的持有个数,仅展示Shallow Heap大于256KB的节点
- Shallow Heap:对象本身占用内存的大小
- Retained Heap:对象被垃圾回收器回收后能被GC从内存中移除的所有对象之和。Retained Heap可以更精确的反映一个对象实际占用的内存的大小

页面支持跳转到会话详情。
内存详情
提供Android设备相关内存详情数据,包含:
前台内存和后台内存:
- 物理内存
- Java使用内存
- 显存
- 虚拟内存
- Java内存使用率
- Java物理内存使用
- Native物理内存使用

iOS系统
环境信息
包含以下信息:
- User ID
- 应用启动时间
- 异常发生时间
- 会话时长
- DeviceID
- 应用版本
- 设备型号
- 操作系统
- 地域
- 运营商
- 接入方式
- 设备内存
- 应用占用内存(百分比)
- 剩余内存(百分比)
- 剩余存储空间(百分比)
- 剩余电量
- CPU指令集
- CPU用量
- 是否越狱
引用链(根因分析)
分析步骤:
- 从对象数量和对象内存分配大小两个角度找到引用链中最可能的那个类别
- 在Stacks中选中某个调用者并向它的父节点回溯查看引用关系,找到有可能的一条引用路径(可以通过Total和Size来判断当前选中的Stacks出现次数及大小)
- 查看Stacks Trace里内存分配时的调用栈信息,再判断是哪个业务模块发生的问题
包含以下指标:
- Category:内存分配类别(可能为具体的对象名或Malloc分配内存的大小)
- Total:类别调用次数
- Total Bytes:类别内存分配总大小
- Stacks:调用者(可能为一个,也可能为多个)
- Stacks Trace:内存分配时调用栈信息

页面支持跳转到会话详情。