Android Studio 内置了四种性能监测工具Memory Monitor、Network Monitor、CPU Monitor、GPU Monitor,我们可以使用这些工具监测APP的状态,该文简单介绍下这些工具的使用
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,如下图
最后补充一个我遇到的例子
m是存储在静态区的静态变量,而Ma是内部类,其持有外部类Activity的引用。这样就导致Activity需要被销毁时,由于被ma所持有,所以系统不会对其进行GC,这样就造成了内存泄漏。以上是我的例子,不断的从MainActivity跳到Main2Activity,很明显会因为Context导致内存泄漏,下面我们用Android Monitor来排查出来
然后进入到.hprof结尾的文件
结束啦
网友评论