Android Studio Profiler使用心得 检测内存泄露问题

时间:2024-05-19 18:44:16

最近在分析app的内存泄露问题研究了下as的profiler功能  这里记录下个人心得

内存泄露相关文档:https://juejin.im/post/5a652d31518825734108080d

首先  对于profiler基础介绍 :https://blog.****.net/gaugamela/article/details/79027538

下面是个人心得

1.首先得出结论profiler不详细提供分析c或c++库进行的内存占用 其中包括android 系统使用的库或者自己的.so库 它们占用的内存在下面Native部分统计

2.profiler统计中详细可以查看的内存占用主要就是下图java部分和allocated部分了(不知道这个 看profiler的介绍 内存占用不管怎么算  数字都对应不上  哈哈)

Android Studio Profiler使用心得 检测内存泄露问题

3.我们看下面  shallow size 此堆中所有实例的总大小(以字节为单位)。其实算是比较真实的java堆内存

比如下图  java堆中占用5.2M内存  在选定的时间点 java占用shallow size统计的1M左右内存(单位为字节)

看左边String  数据  在选定时间段内  分配了202个  回收了182个  其中剩下的就是未回收的  其中会包括正在使用的部分或其他

 

Android Studio Profiler使用心得 检测内存泄露问题

点入可以看到  这个数据的分配时间和回收时间  没有回收的会看到 没有标注回收时间  可以在下方查看代码调用的地方  然后进行处理

Android Studio Profiler使用心得 检测内存泄露问题

个人经验  可以让某个功能反复运行几个周期 然后在profiler中选定整个周期时间  从开始内测分配的时间(坡度开始)到最终释放的时间(周期回收的坡底)这样  多个周期结束  这个时间段内  统计的内存占用  为整个过程完成后剩下的 占用情况  这样就可以进一步分析  内存泄露情况了