Android内存泄漏排查利器LeakCanary

发布时间 - 2026-01-11 00:19:48    点击率:

本文为大家分享了Android内存泄漏排查利器,供大家参考,具体内容如下

开源地址:https://github.com/square/leakcanary

在 build.gralde 里加上依赖, 然后sync 一下, 添加内容如下

dependencies {
 ....
 debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
 releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
 testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
 }

省略号代表其他已有内容

在 Application类里面将 LeakCanary 初始化。。 比如叫MyApplication ,如果没有就创建一个,继承 android.app.Application。 别忘了在AndroidManifest.xml中加上,否则不起作用

public class MyApplication extends Application {
 @Override
 public void onCreate() {
  super.onCreate();

  if (LeakCanary.isInAnalyzerProcess(this)) {
   // This process is dedicated to LeakCanary for heap analysis.
   // You should not init your app in this process.
   return;
  }
  LeakCanary.install(this);

  // 你的其他代码从下面开始
 }
}

官方已经有demo了,可以跑跑看。

package com.github.pandafang.leakcanarytest;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);


 View button = findViewById(R.id.async_task);
 button.setOnClickListener(new View.OnClickListener() {
  @Override public void onClick(View v) {
  startAsyncTask();
  }
 });
 }


 void startAsyncTask() {
 // This async task is an anonymous class and therefore has a hidden reference to the outer
 // class MainActivity. If the activity gets destroyed before the task finishes (e.g. rotation),
 // the activity instance will leak.
 new AsyncTask<Void, Void, Void>() {
  @Override protected Void doInBackground(Void... params) {
  // Do some slow work in background
  SystemClock.sleep(20000);
  return null;
  }
 }.execute();
 }
}

进入主界面按下按钮, 再按返回键退出主界面, 反复几次,LeakCanary  就能探测到内存泄漏了。注意要多操作几次,1次的话泄漏规模太小,可能不会探测到。LeakCanary  一旦探测到会弹出提示的。

回到桌面,会看到一个LeakCanary 的图标,如果有多个app 用到就会有多个LeakCanary图标。

点进去就会看到内存泄漏记录

再点进去就可以看到调用栈了

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


# Android  # 内存泄漏  # LeakCanary  # Android LeakCanary的使用方法介绍  # Android中的LeakCanary的原理详解  # Android 进阶实现性能优化之OOM与Leakcanary详解原理  # Android LeakCanary检测内存泄露原理  # Android中LeakCanary检测内存泄漏的方法  # 使用Android Studio检测内存泄露(LeakCanary)  # Android性能优化之利用强大的LeakCanary检测内存泄漏及解决办法  # 详解LeakCanary分析内存泄露如何实现  # 多个  # 几次  # 就会  # 就能  # 已有  # 如果没有  # 弹出  # 要多  # 按下  # 别忘了  # 太小  # 大家分享  # 创建一个  # 开源  # 具体内容  # 大家多多  # 再按  # 就可以  # 跑跑  # 再点 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  如何快速查询网址的建站时间与历史轨迹?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel如何使用Telescope进行调试?(安装和使用教程)  浅析上传头像示例及其注意事项  JavaScript如何实现继承_有哪些常用方法  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  如何基于云服务器快速搭建网站及云盘系统?  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  简单实现Android文件上传  iOS发送验证码倒计时应用  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  利用vue写todolist单页应用  深入理解Android中的xmlns:tools属性  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  如何选择PHP开源工具快速搭建网站?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  如何续费美橙建站之星域名及服务?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  如何基于PHP生成高效IDC网络公司建站源码?  如何获取PHP WAP自助建站系统源码?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  如何在阿里云虚拟服务器快速搭建网站?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  如何在万网自助建站平台快速创建网站?  如何快速上传建站程序避免常见错误?  Laravel如何实现数据库事务?(DB Facade示例)  利用JavaScript实现拖拽改变元素大小  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  Linux系统运维自动化项目教程_Ansible批量管理实战  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  网站制作软件有哪些,制图软件有哪些?  iOS UIView常见属性方法小结  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何在腾讯云服务器上快速搭建个人网站?