• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android内存泄漏排查利器LeakCanary,androidleakcanary

Android内存泄漏排查利器LeakCanary,androidleakcanary

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android leakcanary,leakcanary,leakcanary使用,leakcanary下载,leakcanary eclipse等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android内存泄漏排查利器LeakCanary,androidleakcanary


开源地址: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图标。

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

 

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

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android内存泄漏排查利器LeakCanary,androidleakcanary

相关文章

  • 2017-05-26广播,本地广播(),广播
  • 2017-05-26自定义Toast的显示位置和显示内容,自定义toast
  • 2017-05-26Intent之运输大队长,Intent之运输队长
  • 2017-05-26安卓第四天笔记-Sqlite,安卓第四天-sqlite
  • 2017-05-26Couldn&#39;t load libPassword from loader:NDK开发中C文件编译成cpu的so类库时,找不到类库报错的原因之一,libpasswordndk
  • 2017-05-26硅谷社交10--会话详情页面,硅谷社交10--会话
  • 2017-05-227.5.2 WebView和JavaScrip交互基础
  • 2017-05-26ListView的&#160;addHeaderView,addheaderview
  • 2017-05-26Android消息处理机制(Handler、Looper、MessageQueue与Message)
  • 2018-01-28android 滑动冲突的处理

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • android am命令以及hotkey文件的编写,
    • android launchmode 使用场景
    • Android 应用程序集成FaceBook 登录,androidfacebook
    • Loader详解,asynctaskloader详解
    • Android studio1.5.1 NDK配置开发
    • android 5.0后对于apk 跑32 64 的逻辑
    • linux设备驱动程序之时钟管理(2)----又见结构
    • android Android性能优化之如何避免Overdraw,androidoverdraw
    • 一个难倒 3年 android开发经验 &quot; 工程师 &quot; 的 &quot;bug&quot;
    • JRebel for Android 1.0发布!,jrebelandroid

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有