如何检测内存泄漏

1.如何检测内存问题

内存泄漏:在基于Java的运行中,内存泄漏是一种编程错误,它会导致应用程序对已经不需要再使用对象的引用。所以,无法回收该系统给该对象分配的内存。最终导致OOM(OutOfMemoryError 内存泄漏) 崩溃。

简单来说就是:一些对象有着有限的生命周期。当这些对象所要做的事情完成了,我们希望他们会被回收掉。但是如果有一系列对这个对象的引用,那么在我们期待这个对象生命周期结束的时候被收回的时候,它是不会被回收的。它还会占用内存,这就造成了内存泄露。持续累加,内存很快被耗尽。

通过工具来检测是否错在内存泄漏的问题:

1. 通过Android Studio 自带的工具 Android Profilter 找到MEMORY这个栏目 进行检测 [直观看到内存的变化,需要到他当前应用对应的报名下去看那块导致的内存泄露]

Android Profilter

2.LeakCanary 直接指定你界面存在的内存泄露并且将所有引用到的地方都会以链条的形式展示出来

开始使用

 1> 在 build.gradle中加入引用,不同的编译使用不同的引用

dependencies { 

    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3' 

    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'

 }

build.gradle中加入引用

 2> 在Application

public class ExampleApplication extends Application { 

    @Override public void onCreate() {

         super.onCreate(); 

        LeakCanary.install(this);

     }

}

Application

这样就万事俱备了,在debug build中,如果检测到某个activity有内存泄漏,LeakCanary就会自动显示一个通知。

例子

LeakCanary中文使用说明网址:https://www.liaohuqiu.net/cn/posts/leak-canary-read-me/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容