Products
GG网络技术分享 2025-11-13 18:34 2
LeakCanary 是一个用于检测 Android 应用内存泄漏的开源工具,由 Square 公司开发。
先说说 在项目的 build.gradle 文件中添加 LeakCanary 的依赖:

groovy
dependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.x'
}
注意,LeakCanary 只应在 debug 构建中添加,以避免关系到生产周围的性Neng。
在自定义的 Application 类中初始化 LeakCanary:
java
public class MyApplication extends Application {
@Override
public void onCreate {
super.onCreate;
if ) {
return;
}
LeakCanary.install;
}
}
这行代码会在 Application 的 onCreate 方法中启动 LeakCanary。
要在 Activity 或 Service 中检测内存泄漏, Neng用 LeakCanary.startTracing 和 LeakCanary.stopTracing
java public class MainActivity extends AppCompatActivity { @Override protected void onCreate { super.onCreate; setContentView; LeakCanary.startTracing; }
@Override
protected void onDestroy {
super.onDestroy;
LeakCanary.stopTracing;
}
}
对于 Service,Neng用 LeakCanary.refWatcher
java public class MyService extends Service implements ResultPresenter { private final RefWatcher refWatcher = LeakCanary.refWatcher.listenerService;
@Override
public int onStartCommand {
refWatcher.watch;
return START_STICKY;
}
@Override
public void onDestroy {
super.onDestroy;
refWatcher.watch;
}
当 LeakCanary 检测到内存泄漏时它会kan得出来一个通知,通知中包含了内存泄漏的详细信息。点击通知, LeakCanary 会打开一个琢磨器窗口,其中包含了内存泄漏的堆栈跟踪信息和相关的对象引用信息。
根据琢磨器给的线索, 定位弄得内存泄漏的具体代码位置,并采取相应的措施进行修优良。比方说 Ru果内存泄漏是由于匿名内部类持有外部类引用弄得的,Neng考虑用静态内部类或没劲引用来避免这玩意儿问题。
LeakCanary 还给了许许多其他配置选项,比方说:
LeakCanary.install.listener)Neng添加一个监听器来接收内存泄漏事件。LeakCanary.install.listenerServiceNeng将琢磨器服务绑定到一个 Service 上。LeakCanary.install.heapDumpAnalyzerEnabled启用堆转储琢磨。和修优良 Android 应用中的内存泄漏问题,从而搞优良应用的性Neng和稳稳当当性。
Demand feedback