欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

使用Android Studio检测内存泄露(LeakCanary)

程序员文章站 2024-02-27 12:18:45
内存泄露,是android开发者最头疼的事。可能一处小小的内存泄露,都可能是毁千里之堤的蚁穴。 怎么才能检测内存泄露呢? androidstudio 中memory控件...

内存泄露,是android开发者最头疼的事。可能一处小小的内存泄露,都可能是毁千里之堤的蚁穴。 怎么才能检测内存泄露呢?
androidstudio 中memory控件台(显示器)提供了一个内存监视器。我们可以通过它方便地查看应用程序的性能和内存使用情况,从而也就可以找到需要释放对象,查找内存泄漏等。

熟悉memory界面

打开日志控制台,有一个标签memory ,我们可以在这个界面分析当前程序使用的内存情况。

使用Android Studio检测内存泄露(LeakCanary)

运行要监控的程序(app)后,打开android monitor控制台窗口,可以看到memory控制台。 点击memory控制台上enable按钮,memory控制台开始显示正在运行时程序的memory使用情况。如上图中显示:

androidstudio memory的功能:

  • 启动与关闭memory监测按钮
  • 手动触发gc按钮
  • dump java heap 按钮,点击android studio就开始干活了,成功后会自动打开 hprof文件。
  • start(stop) allocation tracking按钮先点击一次,然后会看到memory recorder开始转动,然后自己开始在app上面做相应的操作。在合适的时间再点一次,结束记录。

如何检测内存泄露

我们点击dump java heap 这个按钮,app会freeze住。大概几十秒后,

dump成功后会自动打开 hprof文件。

使用Android Studio检测内存泄露(LeakCanary)

如果我们想了解内存分配更详细的情况,可以使用allocation traker来查看内存到底被什么占用了。 点击starg allocation tracking按钮。开始分配追踪,过一些时间后,点击stop allocation tracking结束追踪的位置。停止追踪后 .alloc文件会自动打开。

使用Android Studio检测内存泄露(LeakCanary)

当你想查看某个方法的源码时,右键选择的方法,点击jump to source就可以了。

使用leakcanary

leakcanary是square公司推出的一款简单粗暴的检测内存泄漏的工具。

leakcanary会检测应用的内存回收情况,如果发现有垃圾对象没有被回收,就会去分析当前的内存快照,也就是上边mat用到的.hprof文件,找到对象的引用链,并显示在页面上。这款插件的好处就是,可以在手机端直接查看内存泄露的地方,可以辅助我们检测内存泄露。

使用Android Studio检测内存泄露(LeakCanary)

使用: 

在build.gradle文件中添加,不同的编译使用不同的引用:

dependencies { 
  debugcompile 'com.squareup.leakcanary:leakcanary-android:1.3'
  releasecompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
}

在应用的application oncreate方法中添加leakcanary.install(this),如下:

public class exampleapplication extends application {

 @override public void oncreate() {
  super.oncreate();
  leakcanary.install(this);
 }
}

应用运行起来后,leakcanary会自动去分析当前的内存状态,如果检测到泄漏会发送到通知栏,点击通知栏就可以跳转到具体的泄漏分析页面。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。