位置: 编程技术 - 正文

接入LeakCanary检测内存泄露(接入hpool)

编辑:rootadmin
接入LeakCanary检测内存泄露前几天square在Github上发布了他们的内存泄漏检测库,LeakCanary,短短几天star已经接近,研究了一下后,发现其对QZone也很有价&#;。原来我们看到一个toast弹出内存泄露,但是也看不出什么相关信息,所以只能直接忽略。一个内存泄露既需要测试同学dump HPROF再用MAT和Finder分析提单,开发同学接到单后又要在去分析HPROF看是哪里HOLD住了对象导致内存泄露,对之前没接触过这方面工作的人还是需要一定学习成本,且比较浪费时间成本。很多潜在的问题可能没有覆盖到,而一直藏在那里消耗内存。通过LeakCanary,我们可以降低测试和修复成本,并发现更多的潜在内存泄露。这里不多介绍接入细节,我们简单看下原理和效果。【原理】LeakCanary通过square自家的HAHA来自动化分析Android heap dumps,内部基于MAT, vshor/mat,AndroMAT来做Java和Android特定的heap分析,亮点则是其将需要人工分析的事情做到了完全自动化,并给出能帮助快速定位修复内存泄露的信息。在Application中使用LeakCanary.install(this)后,LeakCanary就会自动install一个ActivityRefWatcher来自动化检测activity是否在onDestroy后有泄露。具体步骤大致是1. 自动把activity加入到KeyedWeakReference2. 在background线程中,检查onDestroy后reference是否被清除,且没有触发gc3. 如果reference没有被清除,则dump heap到一个hprof文件并保存到app文件系统中4. 在一个单独进程中启动HeapAnalyzerService,HeapAnalyzer使用HAHA来分析heap dump。5. HeapAnalyzer在heap dump中根据reference key找到KeyedWeakReference。6. HeapAnalyzer计算出到GC Roots的最短强引用路径来判断是否存在泄露,然后build出造成这个泄露的引用链。7. 结果被传回来app进程的DisplayLeakService,并展示一个泄露的notification。square称从用了LeakCanary后,发现并修复了很多他们app中的内存泄露,而且找到了一些Android SDK中的泄露,最终减少了%因为OOM错误导致的crash。【可深入的点】由于该工具是基于Activity、Fragment的onDestroy触发的,且有些泄露并不是必现的,所以考虑可以基于自动化测试来做完整的覆盖,并批量输出内存泄露的信息,借助其输出的log,也可以方便定位出泄露的原因。

推荐整理分享接入LeakCanary检测内存泄露(接入hpool),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:接入方式lan是什么意思,接入方式lan,接入方式lan,接入认证检测失败是怎么回事,接入认证检测,接入认证检测,接入认证检测,接入认证检测,内容如对您有帮助,希望把文章链接给更多的朋友!

接入LeakCanary检测内存泄露(接入hpool)

版权声明:本文为博主原创文章,未经博主允许不得转载。

实现类似Tumblr的Title Bar跟随滑动渐变的效果 轻博客应用Tumblr中,在看他人的主页时候,可以看到顶部titlebar的一个很酷炫的体验,当在最顶端,整个titlebar的背景是透明的,而上面的字体和图标是

沉浸式状态栏技术方案及其中的一些坑 1.沉浸式状态栏沉浸式状态栏是android4.4开始支持的一个feature,在软件打开的时候通知栏和软件顶部颜色融为一体,这样不仅可以使软件和系统本身更加

音频焦点 (audio focus)(二) 什么叫音频焦点(audiofocus)?android系统是一个多任务操作系统,因此同一时刻允许许多任务同时工作。但是这对音频类应用来说是个挑战,因为如果多

标签: 接入hpool

本文链接地址:https://www.jiuchutong.com/biancheng/371062.html 转载请保留说明!

上一篇:SparseArray 简介(sparsomycin)

下一篇:沉浸式状态栏技术方案及其中的一些坑(安卓沉浸式状态栏框架)

  • 税收会计在会计中的应用
  • 进项票管理软件
  • 车辆购置税和车船税的区别在哪
  • 2019发票认证期限新规
  • 个体季度申报怎么写
  • 物流托运不给发货怎么办
  • 收入与支出怎么算利润率
  • 公司员工提成怎么交个税
  • 上个月工资没有发
  • 新会计准则中资产减值论文
  • 核定征收企业有哪些
  • 提供教育服务免征增值税文件
  • 出口退税退的是哪部分税
  • 贴现利息应该计入哪个科目
  • 个税申报表在哪下载打印
  • 免抵退税额抵减额和不得免征和抵扣税额是一个意思吗
  • 出差伙食补贴没发
  • 招待费进项税能抵扣嘛
  • 购买的商业保险可以税前扣除吗
  • 待抵扣进项税额是二级还是三级
  • 工资上月计提多了,这个月怎么冲
  • 工会经费,职工福利费,教育经费的扣除标准
  • windows11iso镜像多久更新一次
  • thinkphp5开发教程
  • php语言之面向对象编程 educoder
  • unity默认存储路径
  • macOS 11 Big Sur 开发者预览版 Beta 7正式推送
  • PHP:oci_cancel()的用法_Oracle函数
  • 归还银行借款摘要模板
  • 企业要方便客户与企业的沟通,尽可能降低
  • 出差补贴如何入账报销
  • 作废的普通发票,顾客联拿不回来
  • 伊斯塔神
  • laslajas大教堂
  • 冰山从哪里来
  • 一般纳税人的好处和坏处
  • 外管证预缴税费怎么算
  • 增值税专用发票丢了怎么补救
  • 实收资本大于注册资本是什么意思
  • 电脑耗材发票税点多少
  • python多线程编程案例
  • 广告费明细清单
  • 事故赔偿给谁
  • 土地使用权转让合法吗
  • 发票类别包含哪几种
  • 什么是金融资产和金融负债
  • 买一赠一怎么做账
  • 出口退税红字冲减
  • 溢价发行可转换债券 利息调整在贷方吗
  • 探望生病员工属于什么费用
  • 管理人员的奖金可以索赔吗
  • 以前年度财务费用漏记
  • 影视产业前景
  • 怎么样创建
  • macos 右键菜单
  • centos 命令大全
  • 怎么删除服务器管理的服务
  • centos5安装步骤
  • centos chrony
  • windows更新驱动程序需要多久
  • windows10累积更新很慢
  • windows8能免费升10吗
  • cocos lua js
  • 微信小程序倒计时乱跳
  • Extjs4 GridPanel 的几种样式使用介绍
  • android开源软件
  • js 操作excel
  • unity3D利用W,A,S,D让物体移动
  • node搭建项目
  • 深入理解android卷1 pdf
  • android 动态化方案
  • android 字体设置
  • android 系统app开机自启动设置
  • apk反编译去广告教程
  • 如何办理清税证书
  • 江苏电子税务局app下载
  • 申报期包括不包括最后一天
  • 淮安市地税局电话号码
  • 企业报税年报如何填写
  • 北京市延庆区城管执法局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设