1.如何检测内存问题
内存泄漏:在基于Java的运行中,内存泄漏是一种编程错误,它会导致应用程序对已经不需要再使用对象的引用。所以,无法回收该系统给该对象分配的内存。最终导致OOM(OutOfMemoryError 内存泄漏) 崩溃。
简单来说就是:一些对象有着有限的生命周期。当这些对象所要做的事情完成了,我们希望他们会被回收掉。但是如果有一系列对这个对象的引用,那么在我们期待这个对象生命周期结束的时候被收回的时候,它是不会被回收的。它还会占用内存,这就造成了内存泄露。持续累加,内存很快被耗尽。
通过工具来检测是否错在内存泄漏的问题:
1. 通过Android Studio 自带的工具 Android Profilter 找到MEMORY这个栏目 进行检测 [直观看到内存的变化,需要到他当前应用对应的报名下去看那块导致的内存泄露]
Android Profilter2.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/
网友评论