位置: 编程技术 - 正文

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

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

  • 安徽增值税发票勾选认证流程
  • 代扣代缴境外增值税可以抵扣
  • 经营性现金流量净额是什么意思
  • 买二手设备还需要备案吗
  • 发票号码代码不合法
  • 员工个人无息借款违法吗
  • 银行存款核算如何操作
  • 出售股票会计怎么做分录
  • 企业拥有房产每年如何交税
  • 劳务派遣公司是干嘛的
  • 当期净资产收益率怎么算
  • 建筑企业预交增值税问题尚未得到解决
  • 土地增值税的土地成本要扣除增值税吗
  • 全额抵免的计算
  • 公司房产税怎么做分录
  • window10开始菜单
  • 开具红字发票信息表对方未接受到怎么办
  • 溢价发行股票的相关交易费用冲减资本公积
  • 把桌面文件放到虚拟机
  • 桌面右键个性化没有关联的程序
  • 在建工程包括哪些明细
  • 购买理财产品收到的利息分录
  • macbookpro怎么打开活动监视器
  • inputtypefile 文件名
  • php提示框
  • php curl_init
  • php教程100
  • 设备租赁费属于劳务吗
  • laravel快速入门
  • 财政补贴的内容分类
  • 电子发票有哪些版本
  • 发票没有的位数怎么写
  • 背景渐变 css
  • 中兴网管操作手册
  • 红冲上年度收入怎么做凭证
  • mysqldump命令不存在
  • 原材料用于在建工程增值税如何处理
  • 未开票金额怎么填写
  • 机动车发票哪几联 做帐
  • sql死锁的原因及解决方法
  • mongodb起源
  • sql server中数据文件的扩展名是
  • 酒店周转材料怎么摊销
  • 长期待摊费用的账务处理
  • 小规模纳税人是小微企业吗
  • 企业借款利息计入什么科目
  • 哪些项目的进项不含税
  • 公对公退款是不是很麻烦
  • 增值税附加税的税收优惠政策
  • 购买设备分期付款凭证怎么做
  • 房地产企业按简易计税
  • 企业应交税金包括印花税吗
  • 错账的更正方法有哪些
  • asp.net select
  • asp 分页
  • hyper-v虚拟机无法初始化
  • office技术预览版和增强版
  • win10系统如何将c盘的软件移到d盘
  • 下列哪种情况能使血管升压素释放增加
  • u盘装系统系统资料会被泄露吗
  • 将程序桌面图标放到桌面
  • mac电脑系统安装
  • win7 64位系统安装绘声绘影8提示已安装另一个版本的解决方法
  • 怎么在mac上看电视剧
  • win8虚拟内存怎么设置最好
  • win 7怎么办
  • win10系统下怎么将腾讯qlv格式转换mp4格式?
  • cocos2dx开发鸿蒙app
  • javascript对象的属性和方法
  • unity3d documentation
  • javascript教程doc
  • js function的this指向
  • jquery插件库怎么导入
  • jQuery插件cxSelect多级联动下拉菜单实例解析
  • 话费的发票可以做费用吗
  • 税代扣代缴
  • 社保当月减员当月还可以增加上吗
  • 如何查询车辆购买的保险
  • 无锡市高新区税务局张贤平
  • 加油账单怎么查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设