位置: 编程技术 - 正文

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

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

  • 广东税务是什么
  • 生产车间领用材料,用于产品生产
  • 母公司与子公司的区别
  • 抵扣旅客运输增值税报表怎么填
  • 增值税专用发票抵扣期限
  • 施工单位企业所得税
  • 生产车间职工工资
  • 个税手续费返还比例
  • 劳务公司发放农民工工资的三种形式
  • 母子公司间资产划拨开免税发票
  • 往年预付账款错了,应如何调?
  • 核定征收个体户个人经营所得税
  • 税收优惠退回的税金怎么入账
  • 税控设备全额抵扣政策
  • 管理会计的目标包括多选题
  • 三证合一之前
  • 小规模季度不超过多少不用交税
  • 劳务费可以开吗
  • 企业处理二手车增值税没交,有什么影响
  • 当月认证的发票当月一定要入账吗
  • 个人如何开专票
  • 小额贷款公司可以放贷吗
  • 收到购货方退回的发票联和抵扣联如何处理?
  • 暂估入账的处理
  • 利润表中的其他综合收益
  • 炫龙dd3笔记本怎么样
  • php serialize
  • 代扣代缴个税手续费返还政策
  • PHP:pg_transaction_status()的用法_PostgreSQL函数
  • 不动产进项税额转出计算公式
  • 业务招待费财务管理制度
  • opencv详解
  • 深红玫瑰鹦鹉多钱一个
  • php的file函数
  • 什么是社保差额
  • 带你看看房间英语怎么写
  • php curl代理
  • javaweb项目开发的原理
  • php语言之面向对象编程 educoder
  • 气温和降水空间变化一月平均气温规律是什么原因是什么
  • php执行另一个php
  • phpcms v9安装教程
  • 支付银行手续费等直接收费金融服务
  • 纳税人异地预缴所得税
  • 国外商贸公司
  • 劳务费不足800如何入账
  • 深入了解工作优势怎么回答
  • 固定资产是价税合计吗
  • 财务费用手续费在借方还是贷方
  • 所得税预缴怎么申报
  • 员工奖励账务处理流程
  • 税控盘减免税款月末不用交税还要结转吗
  • 融资租赁首付款的性质
  • 增值税发票虚开补税原来入库的材料处理?
  • 什么是企业管理的基础工作
  • 时段与时点
  • 企业对私账户合法吗
  • 小型便利店靠什么进行营利
  • 长期待摊费用什么时候结束摊销
  • 会计账簿的设置与登记
  • window怎么样
  • 64位Vista、Windows7系统IIS连接数据库故障完美解决
  • 不会安装系统怎么安装
  • ubuntu无法下载
  • linux安装过程中的硬盘分区
  • regsync.exe - regsync是什么进程 有什么用
  • win8无法使用内置管理员账户打开ie
  • Win10 Mobile build 10586.338上手视频曝光
  • linux桌面设置界面在哪
  • win7系统笔记本无线网络找不到
  • 简述常用
  • cocos内存管理
  • nodejs函数返回值
  • jQuery EasyUI tree 使用拖拽时遇到的错误小结
  • nodejs如何实现数据库
  • jquery mobile grid
  • 天津武清房管局电话
  • 个人限购
  • 纳税申报的期限是多少年
  • 湖北职称网上申请流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设