位置: 编程技术 - 正文

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

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

  • 借款人和还款人不相同的情况下逾期还款会影响哪方信用
  • 注册公司工贸和商贸区别
  • 什么情况下可以要求员工待岗
  • 资产负债表存货怎么填列
  • 收到抵物广告费的会计处理怎么做?
  • 没有银行回单用明细账可以做账吗
  • 货车挂靠企业需要交增值税吗?
  • 个人公司转让协议怎么写
  • 招投标增值税
  • 旧房转让土地增值税计算
  • 快递费可以抵扣进项税额吗
  • 小规模收到专票要做进项税额转出吗
  • 银行存款二级明细科目有哪些
  • 建筑企业预交增值税问题尚未得到解决
  • 填报企业年报
  • 销售的增长率公式是什么
  • 员工交通费报销标准
  • 双倍余额法折旧率计算公式
  • 公司注册资金抽逃
  • 抵押房屋可以出卖吗
  • 小规模餐饮业怎样报税减免
  • php创建表单
  • Win10 19043.1237 9月累积更新 KB5005565推送(附更新修复+下载)
  • Mac怎么更改默认打开方式
  • 隐藏资源管理器窗口
  • winpe怎么安装到u盘
  • 直系亲属股权转让免征个人所得税
  • php ftp功能
  • php __callstatic
  • 豁免债权如何做账
  • 向客户收费
  • php判断查询结果是否存在
  • 这可能是最好的144平米小平层户型
  • 转出多交增值税账务处理
  • 一次性伤残就业补助金
  • 桥闸通行费发票上注明的金额含税吗
  • 简易注销公示后怎么操作
  • 会议费需要纳税调整吗
  • 退税申报系统里出货明细金额少0.1会比对报关单金额吗
  • 销售蔬菜企业怎么做
  • 工会经费是什么凭证
  • 九步功法
  • mysql可以存什么
  • 公户直接转给私人账户违法么
  • 以权益结算的股份
  • 纳税人申报的方法有哪些
  • mysql 表不存在报错信息
  • sql连接查询中AB
  • 通货膨胀溢价的英文
  • 人力资本收入
  • 企业小汽车折旧年限
  • 公司现金收付管理
  • 出差在火车上算上班吗
  • 应付利息核算的会计分录
  • 销项税计提多了
  • 存出保证金的账务处理
  • 销售废旧物资是否缴税 如何账务处理
  • sql解析原理
  • bios密码忘记了取电池不管用
  • win7和winxp区别
  • linux常用命令 删除
  • Linux系统中sort排序命令的使用教程
  • 怎么取消win10通知消息
  • win10怎么快一点
  • Extjs4 GridPanel的主要配置参数详细介绍
  • 高效的python
  • node.js中的http.response.writeHead方法使用说明
  • linux shell有什么用
  • python中sort()的用法
  • js设计模式和开发实践
  • python web网站
  • 使用jquery计算li元素的个数
  • 安卓xml存储方式
  • js方法不执行
  • 税务徽标含义
  • 上年汇算清缴调减的职工薪酬今年需要调增吗
  • 武汉电子税务局申领发票以后如何自取
  • 江苏省教师增量绩效多少
  • 小规模纳税人是按月还是按季度申报增值税
  • 京牌车船税网上可以交吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设