Android 应用内存泄漏分析(实战篇)

 在Android应用开发中,内存泄漏比较常见;如果应用越来越卡顿以致被系统杀掉,这个时候就可靠考虑分析下是否是内存泄漏导致的。在此分享内存泄漏分析的一种方式,主要是通过ADB、MAT工具分析,并简单描述内存泄漏的原因。

工具使用

 分析应用内存,首先查看应用内存使用情况,可以通过Android Studio Profiler 或者dumpsys meminfo 命令查看,然后再通过内存分析工具分析内存泄漏情况。Android 内存泄漏分析工具主要有两种:1,通过Android Stuido Profiler工具实时查看内存使用情况;2,获取应用的hprof文件,然后通过MAT工具分析。我们今天要介绍的就是第二种方式;

查看内存使用情况

 Android Studio Profiler查看内存比较直观,但这次我们主要看命令的方式,因为Android Studio Profiler无法应用于Android5.0以下的机器。比如查看A应用的内存使用情况,使用"dumpsys meminfo A应用包名"
memory_am_dumpsys_meminfo

  • 私有内存(Dirty and Clean):
    进程独占内存,也就是进程销毁时可以回收的内存容量。通常private Dirty内存是最重要的部分,因为只被自己进程使用,这也是我们需要关注的。Dirty内存是已经被修改的内存页,因此必须常驻内存(因为没有swap);Clean内存是已经映射持久文件使用的内存页(例如正在被执行的代码),因此一段时间不使用的话就可以置换出去。

  • 实际使用内存(PSS):
    将跨进程共享页也加入进来, 进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存。

当我们操作应用的时候如果发现TOTAl Private Dirty内存只增无减,那就很有可能存在内存泄漏,需要将应用的堆内存dump出来。

获取hprof文件

 获取hprof文件主要包含两个步骤:

  • dump 出java heap 文件,通过An

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值