Android性能测试-如何发现内存泄露

2017-05-19  本文已影响58人  c4a1d989518e

内存泄露一般是由什么引发的?

在大部分应用中,经常会有一类功能是需要加载附加资源的,比如显示从网络下载的文本或图片。这类功能往往需要在内存中存放要使用的资源对象,退出该功能后,就需要将这些资源对象清空。如果忘了清理,或者是代码原因造成的清理无效,就会形成内存泄漏(GC)。

Android上性能测试,首先想到的就应该是安卓sdk中自带的工具,Android Device Monitor。
Android Device Monitor在Android Studio》tools》Android》Android Device Monitor中,打开后,如图:

Android Device Monitor

连接设备后,左侧列表中就会展示正在运行的包,选中包之后,点击其中的那个”🔋“,然后在右侧的【heap】下,点击【Cause GC】,就能捕获当前的内存状态了。
如果接下来,就接着在设备中操作app,可能会造成APP闪退,这时应该点击左侧列表中的那个电池🔋。

Heap
列表 意义
Heap Size 堆栈分配给App的内存大小
Allocated 已分配使用的内存大小
Free 空闲的内存大小
%Used Allocated/Heap Size,使用率
Objects 对象数量

这是我循环的浏览了几个页面之后,程序崩溃,log提示out of memory重新捕获的结果:

后来

从图中可以看出Heap Size和Allocated都一直增长。
还有一个更直观的方法是打开Android studio的控制台那里,有个图形化显示程序内存占用的地方,

可以看出内存占用一直在增长。

文章参考:
Android性能专项测试之Heap Viewer工具
移动App性能评测与优化
腾讯TMQ专项测试团队实战案例精选

上一篇 下一篇

猜你喜欢

热点阅读