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

相关推荐
Meteors.20 小时前
安卓源码阅读——01.grade设置binding为true时,xml如何进行映射
android·xml
_李小白21 小时前
【android opencv学习笔记】Day 26: 滤波算法之低通滤波与图像缩放插值
android·opencv·学习
NiceCloud喜云21 小时前
Claude Code Routines 实战:三种触发器跑通云端自动化编码
android·运维·数据库·人工智能·自动化·json·飞书
我命由我123451 天前
Bugly - Bugly 基本使用( App 质量追踪平台)
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
weiggle1 天前
第二篇:搭建你的第一个 Compose 项目——开发环境与项目结构
android·前端
阿巴斯甜1 天前
为什么 AIDL 接口客户端、服务端要写两份一模一样的?
android
weiggle1 天前
第一篇:Jetpack Compose 宣言——为什么 Android 开发需要声明式 UI
android
城管不管1 天前
什么是Prompt?
android·java·数据库·语言模型·llm·prompt
weiggle1 天前
Jetpack Compose 重组机制与性能优化深度剖析
android