Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • tutorial
  • jetpack

  • components

  • androidx

  • 动态化
  • apm

    • apm相关概念
    • Android稳定性治理
    • Android低端机性能优化
    • monkey测试
    • bitmap
    • 大对象监控
    • android内存
    • 移动端的网络优化
    • 记一次anr问题查询ThreadedRenderer
    • 记一次shrink代码减包调研方案
    • proguard
    • R8
    • perfetto
    • mat
      • hprof
        • 本地dump技巧
        • 客户端dump
      • concepts
      • overview
        • Histogram
      • link
  • module

  • harmony

  • tool

  • other

  • kotlin

  • 《android》
  • apm
Jacky
2024-10-27
目录

mat

.hprof 文件打开工具, 这个文件也可以使用 android studio 打开。 对于比较大的 hprof 文件可以使用 MAT 打开

# hprof

# 本地dump技巧

  1. 使用AS的profile功能。监控memory的变化,当memory到达一定值时,先强制gc下,再进行dump
  2. 有的时候需要静置一段时间,看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
    • MAT 工具定位分析 Java 堆内存泄漏问题方法 (opens new window)
上次更新: 2025/03/30, 20:16:49
perfetto
android module

← perfetto android module→

最近更新
01
npx 使用指南
10-12
02
cursor
09-28
03
inspect
07-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式