由浅入深,详解leakcanary的那些事

author author     2023-03-22     764

关键词:

引言

关于内存泄漏,Android 开发的小伙伴应该都再熟悉不过了,比如最常见的静态类间接持有了某个 Activity 对象,又比如某个组件库的订阅在页面销毁时没有及时清理等等,这些情况下多数时都会造成内存泄漏,从而对我们App的 ​​流畅度​​​ 造成影响,更有甚者造成了 ​​OOM​​ 的情况。

在现代化开发以及多人协作的背景下,如何能做到开发中快速的监测内存泄漏,从而尽可能杜绝上述问题,此时就显得更加尤为重要。

LeakCanary 就是一个可以帮助开发者快速排查上述问题的工具,而几乎所有的Android开发者都曾使用过这个工具,其背后的设计也是各厂自研相应组件的借鉴思想。

而理解 LeakCanary 背后的设计思想与原理,也更是每个应用层开发者所必不可少的技能点。

故此,本篇将以最新的视角,与你一起用力一瞥 LeakCanary

LeakCanary 版本:2.10

本篇定位 中等,将从背景到使用方式,再到源码解析,尽可能全面、易懂。

基础概念

在开始之前,我们还是要解释一些常见的基础问题,以便更好的理解本篇。

flutter帧率监控|由浅入深,详解获取帧率的那些事

前言做线上帧率监控上报时,少不了需要弄明白如何通过代码获取实时帧率的需求,这篇文章通过图解配合Flutter性能调试工具的方式一步步通俗易懂地让你明白获取帧率的基础知识,以后再也不愁看不懂调试工具上指标了。说... 查看详情

由浅入深,聊聊okhttp的那些事(很长,很细节)(代码片段)

引言在Android开发的世界中,有一些组件,无论应用层技术再怎么迭代,作为基础支持,它们依然在那里。比如当我们提到网络库时,总会下意识想到一个名字,即OkHttp。尽管对于大多数开发者而言,通... 查看详情

1.28-2.3博客精彩回顾

...序法】选择排序法的图形理解和案例实现|C++​​12.​​由浅入深,聊聊LeakCanary的那些事​​13.​​一文初探Goroutine与channel​​14.​​LinuxALSA驱动之二:声卡的创建流程​​15.​​分布式事务2种协议及4种模式​​​二、专题推... 查看详情

androidrxjava2flowable详解与背压那些事(代码片段)

1.Rxjava1中的背压Rxjava2中有这么一个被观察者Flowable,同样作为被观察者,它和Observable有什么区别呢,在Rxjava2中,Observable不再支持背压,而新增的Flowable支持背压,何为背压,就是上游发送事件的速度... 查看详情

详解viewmodel的那些事儿(代码片段)

...等,将从背景与使用方式开始,再到源码解读。由浅入深,解析ViewModel的方方面面。导航学完本篇,你将了解或明白以下内容:ViewModel的使用方式;SavedStateHandle的使用方式;ViewModel创建与销毁流程࿱... 查看详情

androidrxjava2flowable详解与背压那些事(代码片段)

1.Rxjava1中的背压Rxjava2中有这么一个被观察者Flowable,同样作为被观察者,它和Observable有什么区别呢,在Rxjava2中,Observable不再支持背压,而新增的Flowable支持背压,何为背压,就是上游发送事件的速度... 查看详情

谈谈zookeeper的那些事

查看详情

关于arraylist的那些事

ArrayList初始化-Java那些事儿ArrayList初始化-Java那些事儿专栏ArrayList底层数组扩容原理-Java那些事儿专栏时间复杂度-Java那些事儿专栏三顾ArrayList-Java那些事儿专栏 查看详情

sentinel与openfeign服务熔断那些事(代码片段)

...可免费获取源码在上一篇中,我们讲解了Sentinel限流详解,其中详细讲解了各个规则下的限流是如何操作,有兴趣的小 查看详情

sentinel与openfeign服务熔断那些事(代码片段)

...可免费获取源码在上一篇中,我们讲解了Sentinel限流详解,其中详细讲解了各个规则下的限流是如何操作,有兴趣的小 查看详情

whywebrtc|“浅入深出”的工作原理详解

前言近几年实时音视频通信应用呈现出了大爆发的趋势。在这些实时通信技术的背后,有一项不得不提的技术——WebRTC。今年1月,WebRTC被W3C和IETF发布为正式标准。据调研机构GrandViewReseach的报告显示,预计2025年全球We... 查看详情

那些有趣的人和事

那些有趣的人和事1.如何获得好点子?2019-02-23PS:视频通过多米诺、数学、物理等知识让音乐的可观赏性大大提高,并介绍了在创作中他是如何获得这些好点子的,笑点很足。【限电脑观看】地址:点击观看 后续将继续更新... 查看详情

关于thread的那些事

关于Thread的那些事 1 : 你能够调用线程的实例方法Join来等待一个线程的结束.比如: publicstaticvoidMainThread(){Threadt=newThread(Go);t.Start();t.Join();Console.WriteLine("Threadthasended!");}staticvoidGo(){for(inti 查看详情

mybatis的那些事

转载请注明出处:http://www.cnblogs.com/yidaijiankuanzhongbuhui/p/7003993.html 用mybatis一年多了,一直是别人搭好框架,配置好各种配置文件和导入jar包,然后自己知道怎么用!回过头来再重新整理学习mybatis,发现很多事如果自己亲手操... 查看详情

大学那些事

...的生活有点印象,还是赶紧写下自己所经历的大学,经历的那些人和事,想想当年经历的那些欢乐,忧愁和感伤..看一看自己这个学习的渣渣是怎样度过的大学生活,经历了哪些让自己怀念的事情..应该是至今让自己记忆犹新的事情大一... 查看详情

json的那些事

1.什么是json?json(javascriptobjectnotation)全称是javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据。2.如何打印json每个key的值?//打印以下json的key值varobj1={‘name‘:‘小颖‘,‘age‘:23,‘s... 查看详情

关于dom的那些事

一开始我学习JS的时候很头疼因为不知道那个是什么鬼...后来的后来...就...没有了选择器varid_div=document.getElementById("id_div");  查看详情

qt那些事

一直做的是windows开发,有2个小项目想做到手机。看来看去,选择了QT。本文介绍自己的学习的一些心得,希望对你有帮助。1.选择QT2.安卓的一些事3.QML调用C++4.资源集成(比较有用,网上资源比较少)5.建议看看c++//------------------... 查看详情