位置: 编程技术 - 正文

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

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

  • 金税盘锁死日期是16号,16号能清卡吗
  • 免税收入不征税收入有哪些
  • 预算会计退回预付差旅费如何记账?
  • 个人劳务票必须本人开吗
  • 房地产涉及的税种和税率
  • 开票系统里红字发票怎么开
  • 股权变更怎么收费
  • 计划成本法领用原材料会计分录
  • 企业收到个体户开的发票
  • 公司收到一张专用发票
  • 自建房屋房产税纳税义务发生时间
  • 有留抵税额的会计处理
  • 资产负债率计算方式
  • 小规模纳税人进材料怎么做账
  • 境外企业分红怎么交税
  • 普票开票开给个人怎么开
  • 待转销项税额会计分录
  • 个体户生产经营所得税减半征收
  • 资本公积可以退还给投资者吗
  • 公司自己的食堂需要办理食品经营许可证吗
  • 红魔3和一加7pro哪个好
  • 建筑业 分包
  • 如何手机个人热点连电脑
  • php中如何使用session
  • php连接mysql数据库详细步骤(图文)
  • 预收账款什么时候确认
  • ahc软件进不去
  • 出售固定资产增值税怎么处理
  • 原始凭证可以没有名称吗
  • 非货币性资产交换和债务重组的区别
  • 固定资产明细账登记
  • php调用url
  • centos 安装php
  • php绘制图形函数
  • 员工办理健康证需要什么材料
  • 现金流量表本月数和本年累计数是相等的么
  • SQLite教程(十四):C语言编程实例代码(2)
  • 一般户可以付款吗
  • 二房东可以卖房吗
  • 差旅费包括哪些费用
  • 民办非企业收到政府拨款分录
  • 政府补助的范围
  • 进口增值税已抵进项税额
  • 偿债基金作用
  • 企业计提坏账准备形成可抵扣暂时性差异
  • 出口转内销补交进口增值税时间
  • 企业研发费用包括工资支出吗
  • 费用报销的凭证是什么
  • 大额往来款项的认定
  • 收到个人支付的培训费可以开对公的发票吗
  • 年终结账的会计分录
  • 零售商品的经营特点有什么(多选题)
  • Hibernate4在MySQL5.1以上版本创建表出错 type=InnDB
  • sqlserver存储过程if语句
  • XP系统怎么设置双屏幕
  • ipad和iPhone的mac地址区别
  • avgorange是什么文件夹
  • avserve2.exe是什么东东
  • 微软手机
  • 苹果电脑macbookpro忘记密码
  • linux中的查找命令
  • window7系统中的桌面指什么
  • win8如何查看所有程序
  • linux各种命令
  • win8.1无线
  • 深入linux内核架构与底层原理 pdf
  • accessviolation怎么解决
  • jquery 动态绑定
  • css图片垂直居中对齐
  • ntp ntpdate
  • 命令行net
  • node socket hang up
  • js滚动条怎么调出来
  • 初步认识的思维导图
  • 江苏省国家税务局官网
  • 溧水到南京南地铁大站快车时刻表
  • 税务局随机抽查事项清单
  • 企业注册的步骤
  • 加计扣除的税收分类编码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设