memory泄露分析方法(Binder,Window,View篇)

View泄露:Hprof 找大量重复的view,点击查看text文案如果相同则找产品他们确认是否合理 **window泄露:**代码或dumpsys window来监测是否有大量同名window,不能用windowtoken来辨别是否重复window,每个window token都不一样,windowtoken初始化过程如下所示:

复制代码
ViewRootImpl(
mWindow = new W(this);
mAttachInfo = new View.AttachInfo(mWindowSession, mWindow, display, this, mHandler, this,context);
mWindowToken = window.asBinder();

Binder泄露:

复制代码
Too many Binders sent to SYSTEM

2类泄漏:

  • ProxyBinders:本地持有对端remote binder对象:(向外发1次binder请求,新建1个Proxy Binders对象) 我有多少联系人

2种报错形式

  • Debuggable builds will throw an AssertionError if the number of map entries exceeds 25_000

    Binder ProxyMap has too many entries: 20691 (total), 20691 (uncleared), 20691 (uncleared after GC ). BinderProxy leak?

  • Android系统创建的Binder数量最大值超过6000,非systemuid的binder调用会被kill掉

2种泄漏原因:

  1. Death Recipients泄露

  2. 对端注册了太多的callback导致泄漏

  • LocalBinders:本地创建的bindercallback对象,传给Server对端回调我用(LocalBinders数量,有多少个人可联系上)

Android BinderProxy leak 原理分析-CSDN博客

相关推荐
城东米粉儿2 小时前
Android MediaPlayer 笔记
android
Jony_2 小时前
Android 启动优化方案
android
阿巴斯甜2 小时前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 小时前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_7 小时前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android
_小马快跑_7 小时前
Kotlin | 从SparseArray、ArrayMap的set操作符看类型检查的不同
android
_小马快跑_7 小时前
Android | 为什么有了ArrayMap还要再设计SparseArray?
android
_小马快跑_7 小时前
Android TextView图标对齐优化:使用LayerList精准控制drawable位置
android
_小马快跑_7 小时前
Kotlin协程并发控制:多线程环境下的顺序执行
android
_小马快跑_7 小时前
Kotlin协程异常捕获陷阱:try-catch捕获异常失败了?
android