Android Raphael使用(专治native 内存泄漏)

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

打印内存

// 代码控制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值