Android Monitor使用,检测内存泄漏。

Android Studio 内置了四种性能监测工具Memory Monitor、Network Monitor、CPU Monitor、GPU Monitor,我们可以使用这些工具监测APP的状态,该文简单介绍下这些工具的使用

Android Monitor使用,检测内存泄漏。_第1张图片

A:手动触发GC操作

B:获取当前的堆栈信息,生成.hprof文件

C:内存分配追踪工具,生成.alloc文件

D:已使用内存

E:剩余可用内存

通过与应用交互并在Memory Monitor中观察它是如何影响内存的使用,图表可以为你展示一些潜在的问题:

1.频繁的垃圾收集活动使应用运行缓慢。

2.应用耗尽内存导致app崩溃.

3.潜在的内存泄漏

正常情况下,上图中的D区域会随着时间的走势慢慢上升(就算你与APP没有任何交互),直到E区域被用完,则会触发GC操作,释放内存,周而复始。如果你发现你的应用是静态的,但是E区域的内存很快就被用完了,即频繁的触发GC操作,这时你就应该引起重视,说不定你的代码中就存在着引起内存泄漏的隐患。

在Memory一栏中,可以观察不同时间App内存的动态使用情况,点击可以手动触发GC(点击上图A处),然后点击上图B处可以进入HPROF Viewer界面,查看Java的Heap,如下图


Android Monitor使用,检测内存泄漏。_第2张图片

最后补充一个我遇到的例子


Android Monitor使用,检测内存泄漏。_第3张图片
m是存储在静态区的静态变量,而Ma是内部类,其持有外部类Activity的引用。这样就导致Activity需要被销毁时,由于被ma所持有,所以系统不会对其进行GC,这样就造成了内存泄漏。


Android Monitor使用,检测内存泄漏。_第4张图片

以上是我的例子,不断的从MainActivity跳到Main2Activity,很明显会因为Context导致内存泄漏,下面我们用Android Monitor来排查出来


Android Monitor使用,检测内存泄漏。_第5张图片

然后进入到.hprof结尾的文件


Android Monitor使用,检测内存泄漏。_第6张图片


Android Monitor使用,检测内存泄漏。_第7张图片

结束啦

你可能感兴趣的:(Android Monitor使用,检测内存泄漏。)