mat
.hprof文件打开工具, 这个文件也可以使用 android studio 打开。 对于比较大的 hprof 文件可以使用 MAT 打开
# hprof
# 本地dump技巧
- 使用AS的profile功能。监控memory的变化,当memory到达一定值时,先强制gc下,再进行dump
- 有的时候需要静置一段时间,看memory是否有降低。
# 客户端dump
因为dump的OOM 后 dump 的 Hprof 体积过大。采用 tailor 开源方案 对Hprof裁剪压缩后上传,但是裁剪压缩后的文件目前没有工具可以直接解析打开,因此需要先进行还原
- tailor方案: 对 Hprof 裁剪压缩后上传.
python3 decode.py -i 裁剪后文件 -o 还原后文件目录及名称
- hprof-conv: 使用此工具转换后,就可以使用 MAT 打开了
hprof-conv [in] [out]
# concepts
Shadow Heap: 对象结构自身所占用的内存大小,不包括其属性引用对象所占的内存- 如
java.util.ArrayList对象的 Shallow Heap 包含8字节的对象头、8字节的对象数组属性 elementData 引用 、 4字节的 size 属性、4字节的 modCount 属性(从 AbstractList 继承及对象头占用内存大小),有的对象可能需要加对齐填充但 ArrayList 自身已对齐不需补充,注意不包含 elementData 具体数据占用的内存大小
- 如
Retained Set: 指的是该对象被 GC 回收后,所有能被回收的对象集合Retained Heap: 一个对象被 GC 回收后,可释放的内存大小
# overview
# Histogram
List objects: 查看对象引用关系with outgoing references: 本对象引用外部对象with incoming references: 外部对象引用本对象
# link
- learn and analyse: link (opens new window)
- download: link (opens new window), 如果下载过慢,可以在下载页面换镜像
- misc
上次更新: 2025/03/30, 20:16:49