位置: 编程技术 - 正文

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

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

  • 农产品减免税政策最新
  • 一般纳税人缴纳税款
  • 交增值税及附加税怎么做账
  • 以设备投资入股要交增值税
  • 什么经营范围可以开茶叶发票
  • 申报时入库税款怎么入账
  • 房产交房前开发商要办齐的手续
  • 残保金上年在职职工工资总额怎么填
  • 房地产自有资金投入
  • 企业奖励的目的
  • 企业物流成本会计核算问题研究
  • 固定资产适用范围
  • 企业增加注册资本需要缴纳什么税
  • 销售额负数 如何填报报表
  • 报表中应交税金和应交税费区别
  • 税率3%开成5%会罚款吗?
  • 支付刻制公司印章费
  • 商品买一送一是打五折吗
  • 财产清查的种类有哪些
  • 租入的固定资产属于资产吗
  • 保洁劳务税点
  • 源泉扣缴税率是多少
  • 旅游地产房产税
  • 工程结算收入要交税吗
  • 增值税税率变动情况
  • 企业借款利息税前扣除怎么算
  • 没有及时对公账户
  • 企业所得税内部辅助机构说明怎么写
  • 一寸照片尺寸是几乘几
  • 促销费影响主营利润吗
  • 丢失空白发票怎么处罚
  • 一般纳税人购进农产品如何抵扣进项税额
  • 电脑每次开机都要按f1怎么解决
  • 耕地占用税的税收优惠
  • Xpath元素定位之同级节点,父节点,子节点
  • 回迁安置房是否有产权
  • 权重值的确定可以依据什么
  • 增值税会自动申报吗
  • php上传多文件
  • php操作mysql数据库
  • 前端传给后端
  • 前端经典面试题及答案
  • php判断用户名是否正确
  • python按行读入
  • Editorial Calendar为你的WordPress添加编辑日历 让文章定时发布更简单
  • 第9章 内存模型分析
  • mongodb操作语句
  • 保险公司工伤怎么赔付
  • 国外货物进入保税仓需要办理什么
  • 发票备注栏必须写吗
  • 应交税费在会计科目的借贷方向
  • 上市公司发放现金的规定
  • 计提地税会计分录怎么做
  • 小中央空调多少钱一台
  • 外币账户结汇至人民币账户
  • 现金往来款怎么做账
  • 机票行程单可以打印几次
  • 如何查询对方是否起诉离婚
  • 不得从销项税额中抵扣进项税的有哪些
  • 独立核算的重要性
  • 规划设计费入什么科目
  • 分公司是否需要独立核算
  • 工程内部承包合同
  • sqlserver数据库建库建表
  • xp系统一直在启动界面怎么办
  • avgcc32.exe进程是什么文件产生的 avgcc32进程信息查询
  • 电脑系统win8
  • windows定时计划
  • python的日志
  • node.js原生支持的编码格式
  • androidweb view
  • node.js操作mssql
  • javascript怎么学
  • javascript面向对象精要pdf
  • 基于js实现微信直播
  • 税务系统跨区调动
  • 临时搭建的活动叫什么
  • 南京市税务局举报中心电话
  • 黑龙江省国税局网站
  • 担保机构和银行的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设