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博客

相关推荐
alexhilton8 小时前
Kotlin互斥锁(Mutex):协程的线程安全守护神
android·kotlin·android jetpack
spencer_tseng10 小时前
Eclipse 4.7 ADT (Android Development Tools For Eclipse)
android·java·eclipse
archko12 小时前
android pdf框架-15,mupdf工具与其它
android·pdf
.豆鲨包14 小时前
【Android】MVP架构模式
android·架构
代码会说话14 小时前
i2c通讯
android·linux·嵌入式硬件·嵌入式
默|笙17 小时前
【c++】set和map的封装
android·数据库·c++
kaikaile199517 小时前
PHP计算过去一定时间段内日期范围函数
android·开发语言·php
2501_9293826518 小时前
电视盒子助手开心电视助手 v8.0 删除电视内置软件 电视远程控制ADB去除电视广告
android·windows·adb·开源软件·电视盒子
太过平凡的小蚂蚁18 小时前
Kotlin 异步数据流三剑客:Flow、Channel、StateFlow 深度解析
android·kotlin
铭哥的编程日记19 小时前
【Linux】库制作与原理
android·linux·运维