1.前期准备
在项目根目录build.gradle中,添加仓库地址:
allprojects {
repositories {
maven {
url 'https://jitpack.io' }
}
}
2.案例实践
构建一个新的Library Module,其中build.gradle中添加依赖:
dependencies {
implementation 'com.github.bytedance:memory-leak-detector:0.2.1'
}
Raphael API使用
Raphael是有两种方式可以监控进程中native内存: 其一是通过java代码来实现,其二是通过adb shell 发送广播命令行来控制。
启动监控:
// 监控指定的so
Raphael.start(
Raphael.MAP64_MODE|Raphael.ALLOC_MODE|0x0F0000|1024,
"/storage/emulated/0/raphael", // 需要申请读写sdcard权限
null
);
参数:
- 第一个参数: 指定模式
- 第二个参数: native内存文件存放的目录,若是sdcard,则需要申请权限
- 第三个参数:指定监控的so库。比如,监控libxxx.so中内存,则传入
".*libxxx\\.so$"; 若传入null ,则监控进程中全部so库;
等同于adb shell 命令行实现:
## 监控整个进程(RaphaelReceiver 组件所在的进程)
## 0x0CF0400=Raphael.MAP64_MODE|Raphael.ALLOC_MODE|0x0F0000|1024
adb shell am broadcast -a com.bytedance.raphael.ACTION_START -f 0x01000000 --es configs 0xCF0400
打印内存:
// 代码控制


3889

被折叠的 条评论
为什么被折叠?



