内存泄露工具(leakcanary、Lint)的使用
来源:互联网 发布:电子目录软件 编辑:程序博客网 时间:2024/05/19 18:00
前言
内存泄漏是开发当中常见的狗皮膏药,我们要想实现一个项目开发下来没有内存泄漏,那是完全不可能的。即使你是大牛级别的人物,也难免会在忙碌的敲代码中出现一些纰漏。常见的检测内存泄漏的工具 有Allocation Tracker(Android Studio)工具、Heap Snapshot工具、Heap Viewer工具、LeakCanary工具、MAT工具、TraceView工具(Device Monitor) 、Lint 等等,考虑到工具的实用性,在此就介绍两种工具,那就是LeakCanary工具 和Lint 工具
下面是各种工具的使用文档
已经上传到 http://download.csdn.net/download/baidu_38477614/10170276
里面是各种工具的详细使用文档。为了方便,以下介绍两种我们开发这最喜爱的内存泄漏检测工具,那就是square第三方的 leakcanary ,只要集成好了,就能自动检测内存泄漏,但是本人更喜欢使用AS 中的Lint 工具 ,非常强大,比 leakcanary 更为强大。那么我们就先比较以下二者的功能
leakcanary
Square公司
可以直接在手机端查看内存泄露的工具
实现原理:本质上还是用命令控制生成hprof文件分析检查内存泄露。
然后发送通知。
功能:仅仅检测内存泄漏,告诉我们位置
Lint分析 工具
Lint是Android Studio 自带的很强大的一种分析工具,它的功能远远多于leakcanary
他能为我们提供什么?
检测资源文件是否有没有用到的资源。 检测常见内存泄露 安全问题SDK版本安全问题 是否有费的代码没有用到 代码的规范---甚至驼峰命名法也会检测 自动生成的罗列出来 没用的导包 可能的bug
本人最喜欢使用Lint分析工具 ,强大更好使用
现在介绍如何继承第三方的 leakcanary
集成leakcanary
官方leakcanary 的gitHub地址https://github.com/square/leakcanary
1.添加LeakCanary依赖包
这里是至今最新的版本,可以访问上方的GitHub地址获取
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
2.首先创建一个ExampleApplication,该类继承于Application,在该类的onCreate方法中添加如下代码开启LeakCanary监控:
public class ExampleApplication 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); // Normal app init code... }}
这里就集成结束了,这样你就可以在debug的时候它会安装一个图标自动监测内存泄漏了,下面是他在桌面生成的图标,一个小鸡
当检测到内存泄漏的时候它会发送一个通知 和一个弹窗,很体贴的告诉你位置
如果你正在进行单元测试,想要关闭leakcanary 那么请在 builder.gradle 中添加
// Ensure the no-op dependency is always used in JVM tests.configurations.all { config -> if (config.name.contains('UnitTest')) { config.resolutionStrategy.eachDependency { details -> if (details.requested.group == 'com.squareup.leakcanary' && details.requested.name == 'leakcanary-android') { details.useTarget(group: details.requested.group, name: 'leakcanary-android-no-op', version: details.requested.version) } } }}
作为开发者,我们很少用到。
Lint分析工具
我们怎么在Android studio 中 开始使用 lint 分析工具
接下来会弹出 以下窗体
点击 ok AS 就帮我们开始分析了
这里是所有的好东西 包括了以下几点
检测资源文件是否有没有用到的资源。 检测常见内存泄露 安全问题SDK版本安全问题 是否有费的代码没有用到 代码的规范---甚至驼峰命名法也会检测 自动生成的罗列出来 没用的导包 可能的bug
是不是很强大,是不是很man 顿时觉着AS 好贴心哪,还有很多它会检测出来
例如驼峰命名法 比如
//你声明一个contextprivate Context mcontext ;
他会检测出你代码不规范。还有很多功能 大家自己去测试一下吧。
我推荐大家使用Lint 分析工具,第三方的Leakcanary 简单,懒汉式追求,当然也很强大,但是一般的小公司里都在使用 Leakcanary ,这个完全靠大家兴趣。
上一篇讲了常见的内存泄漏的案例以及解决办法。地址http://blog.csdn.net/baidu_38477614/article/details/78874459
我会持续发布一些内存优化的博客,敬请期待。谢谢
- 内存泄露工具(leakcanary、Lint)的使用
- 使用LeakCanary检测内存泄露
- 使用LeakCanary检测内存泄露
- android 内存泄露分析 Lint StrictMode LeakCanary Memory Analyzer (MAT)
- LeakCanary 实用的内存泄露自动探测工具
- 【Android】【内存】内存泄露检查工具 LeakCanary
- LeakCanary (Android 检测内存泄漏工具的使用)
- Android内存泄露抓取工具leakcanary
- Android内存泄露抓取工具leakcanary
- 检测App内存泄露--LeakCanary工具
- Android内存泄露监测工具之leakcanary
- Android内存泄露分析工具LeakCanary
- 使用开源项目LeakCanary检测应用的内存泄露
- android 内存泄露分析及调试(LeakCanary使用)
- Android 使用LeakCanary 检测内存泄露
- Android 使用LeakCanary 检测内存泄露
- Android 使用LeakCanary 检测内存泄露
- Android 使用LeakCanary 检测内存泄露
- 线程等待 Join()方法
- mysql索引优化技巧
- Py中的条件判断,if语句总结以及常见错误
- redis数据结构
- SDUT ACM 实验九 小鑫の日常系列故事(二)——石头剪子布
- 内存泄露工具(leakcanary、Lint)的使用
- USACO 4.2 The Perfect Stall 完美的牛栏(最大匹配)
- NodeMCU之快速试用
- 第一个WebService
- MAX232和PL2303、CH340的区别
- 这些年我读过的经典技术书籍
- Java中如何将时间设置为12小时制并区分上下午
- linux 安装php 已有的源码扩展
- mongoDb入魔笔记-1