一 Allocation Tracker
1 作用
追踪内存分配信息。可以很直观地看到某个操作的内存是如何进行一步一步地分配的
2 使用
-
在Memory窗口中点击图中标红的部分,启动追踪,再次点击就是停止追踪,随后自动生成一个alloc结尾的文件,这个文件就记录了这 次追踪到的所有数据,然后会在右上角打开一个数据面板:
-
查看内容
Arrange by package:用包来分类分类内存分配
Arrange by class:用类来分类分类内存分配
-
找到自己定义的类,跳转对应的源码
旧版的AndroidStudio支持统计视图,以柱状图或者轮胎图显示
可以选择分配次数和占用内存大小,默认是大小Size
二 LeakCanary
github搜索 LeakCanary
1 实现原理:
本质上还是用命令控制生成hprof文件分析检查内存泄露。
2 快速集成
build.gradle
dependencies {
// debugImplementation because LeakCanary should only run in debug builds.
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.1'
}
3 相比旧版,不需要在Application中集成
运行app后,日志 过滤LeakCanary,打印: Installing AppWatcher表明集成成功
4 使用
当出现内存泄漏时,会有log打印
三 Lint
1 Lint作用:
- 检测资源文件是否有没有用到的资源。
- 检测常见内存泄露
- 安全问题SDK版本安全问题
- 是否有费的代码没有用到
- 代码的规范—甚至驼峰命名法也会检测
- 自动生成的罗列出来
- 没用的导包
- 可能的bug