位置: 编程技术 - 正文

接入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)

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

  • 个体摊贩
  • 其他综合收益属于损益类科目吗
  • 货物运输费用怎么算
  • 技术使用费所得税怎么算
  • 租赁合同印花税率
  • 税盘减免主表不显示减免怎么填
  • 银行现金支票怎么填
  • 结转损益类账户余额
  • 资产损失税前扣除及纳税调整明细
  • 主营业务收入借增贷减
  • 专利转让费用能否计入研发
  • 单式记账法是什么意思呀
  • 个人贷款打入公司账户
  • 建筑劳务有哪些税种
  • 赠送给客户
  • 企业会议费发票可否抵扣?
  • 装修费算固定资产吗?
  • 代开的发票没有打印怎么作废
  • 营改增后二手固定资产折旧纳税调整怎么做账?
  • 网上抵扣发票操作
  • 行政事业单位往来票据使用范围
  • 关联业务往来年度报告表
  • win10如何设置闹钟
  • 以前年度进项税额转出会计分录怎么做
  • 公司租房中介费能报销吗
  • 辞退补偿金怎么算n1吗
  • 股东投资如何做账务处理
  • 外贸公司进出口权办理流程
  • win10自动关机方法
  • 发代扣代缴手续费个税免
  • win10开始菜单设置无效
  • thinkphp i方法
  • 购买办公用品怎么做明细账
  • 注销后怎么补缴社保
  • php获取mysql数据
  • 人工智能会影响经济发展吗
  • 融资租入的机器设备属于什么科目
  • Win11 Build 25336 预览版发布:Snap 窗口新增最近 20 个标签选项
  • Http协议之Content-Type理解
  • 林木苗圃
  • 不接受商业承兑会怎么样
  • 防洪保安资金可以抵扣个税吗
  • 现金销售商品的会计分录
  • 公司名义送花圈
  • python读取不到文件怎么办
  • 销售提成缴税
  • 为什么实收资本是贷方
  • 增值税抵扣联是什么意思
  • 企业与个人之间关系的理解
  • 计入职工福利费的房租折旧属于人工成本吗
  • 存货和总账不平如何调整
  • 暂估入账应该如何操作
  • 因员工过失造成的工伤用不用赔
  • 弥补以前年度亏损后缴纳所得税
  • 房产税怎么实行
  • 银行收的账户管理费
  • 银行退回服务费怎么写分录
  • 缴纳上月附加税怎么做分录
  • 企业发生亏损时,下列各项,( )是弥补亏损的渠道
  • mysql5.7.26启动失败
  • centos7怎么关闭端口
  • 在window7
  • Window7+CentOS 6.5双系统安装图文方法
  • mac怎么连接校园网wifi
  • LINUX系统管理员维护招聘
  • adguard安全性
  • winxp怎样设置网络
  • win7文件夹选项在哪里打开
  • windows8使用教程
  • 开机慢怎么解决 w8
  • win10怎么安装google浏览器
  • 网页设计绿色
  • javascript语言基础
  • javascript教程推荐知乎
  • javascript教程代码
  • jquery数据绑定
  • 对税务工作者的赞美
  • 新入职税务人员给总局的回信
  • 山西省地方税务总局官网
  • 出口退税申报时间规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设