Android 内存检测LeakCanary

news2025/1/9 14:40:18

在github上下载了一个项目:安装debug版本会产生两个apk,一个是apk本身,一个是Leaks

release版本就正常 不会产生这个问题,百思不得其解,第一次遇到这个问题。

看到这篇博客豁然开朗:在build.gradle.kts 里有如下配置:

// memory leak analysis
debugImplementation("com.squareup.leakcanary:leakcanary-android:2.10")

当安装包为debug包时,Leakcanary会自动运行, 如果出现内存泄漏的情况,会在页面有提示, 点开桌面上Leaks图标,可以看到内存泄漏详情,会显示具体哪个Acitivity发生泄漏

前文:
在软件开发中,最头疼一件事就是内存了,有时候几个问题掌握不好就会报出OOM的错误,所以推荐给大家一个监测OOM的方法。

用法:
1、gradle:

dependencies {
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
    testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
        }

2、Application -> onCreate:

if (LeakCanary.isInAnalyzerProcess(this)) {
  // This process is dedicated to LeakCanary for heap analysis.
  // You should not init your app in this process.
   return;
}
LeakCanary.install(this);

3、运行程序,(在桌面上会产生一个leaks的一个应用,这里记录着内存溢出的记录日志)在程序退出或退出某个界面的时候,如果有内存溢出的话会自动弹框提示或者也可以去leaks里去看。注意在发布应用的时候取消这项功能哟!

效果如图:
SouthEast

4、具体请移步官方:https://github.com/square/leakcanary;
Q: https://github.com/square/leakcanary/wiki/FAQ

Ps:这个只能测试版Debug的时候时候,等到了正式发版的时候记的取消了。
我自己测试的时候,页面开几个手机 发烫的就不行。或者打开应用放那不动也是,一会儿就开始发烫了,占用cpu太多,耗电极大。如果有用过的朋友欢迎交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3天爆肝整理,性能测试问题汇总+解决办法(重要)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 开始性能测试前需…

入门孪生网络3-------使用一维卷积神经网络1DCNN与孪生网络的组合模型来实现excel数据的分类

文章目录 前言入门孪生网络的第三小节,我尝试使用keras或tensorflow2框架来搭建一个数据分类的网络。大家可以参考的程序思路,我也是小白,可以评论区一起讨论。 一、孪生网络与1DCNN组合网络的搭建思路二、我编写的孪生网络与1DCNN组合网络程…

操作教程:EasyCVR视频融合平台如何配置平台级联?

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,在视频能力上,平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等。平台可拓展性强、开放度高、部署轻快&…

干货讲解,财务报表结构分析

财务报表的构成是对企业财务状况、经营成果和现金流量的结构性表述。企业必须重视财务结构对经营业绩的影响,才能解决发展中的问题。 资产质量关注两个角度,一是资产结构,二是现金含量。 资产结构是什么意思呢?就是固定资产和无…

Linux 定时任务提权

Linux 定时任务提权 1.概述2.定时任务创建3.提权步骤 1.概述 定时任务(cron job)是Linux系统中的一个守护进程,用于调度重复任务,通过配置crontab可以让系统周期性地执行某些命令或者脚本。cron 是 Linux 系统中最为实用的工具之…

apple pencil二代平替笔哪个好用?苹果平板触控笔

随着互联网的快速发展,移动数码产品如手机、平板电脑、笔记本等正逐步进入人们的日常生活。同时电容笔的出现,也让这些产品的功能作用更上一层楼。由于苹果原装电容笔的价格非常贵,使得国内出现了越来越多的平替电容笔。总的来说,…

前端开发:基于cypress的自动化实践

如何在vue中使用cypress如何运行cypress如何编写测试用例如何解决测试数据的问题遇到的元素定位的问题如何看待cypresscypress是否为最佳工具测试怎么办? 如何在vue中使用cypress vue提供了vue-cli 可以快速的创建vue项目。 vue create hello-world在选择安装项里…

【亲测】集群环境中MMDetection3.0环境配置

本文记录下在集群环境下使用MMDetection的内容。 环境简介:所用集群设备为本地集群,具有管理节点和计算节点,且管理和计算在不同的主机上,作为用户,没有超级管理员权限。 MMdetection源码下载点击进入 这里主要记录下环…

二叉树题目:二叉树的中序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树的中序遍历 出处:94. 二叉树的中序遍历 难度 3 级 题目描…

Windows Terminal添加至鼠标右键

Windows Terminal添加至鼠标右键 安装 在Microsoft Store中即可下载。 配置 在鼠标右键打开 下载Terminal图标 图标地址:https://raw.githubusercontent.com/microsoft/terminal/master/res/terminal.ico 下载后保存在某个文件夹path 添加到鼠标右键 批处理修改注册表 …

Linux常见指令(超详解哦)

Linux常见指令 引言Linux常见指令查指令——man文件管理相关指令lspwdcdtouchmkdirrmdir与rmrmdirrm cpmvfind 文件查看类catmorelesshead 与 tailheadtail使用管道显示某段内容 grep 打包压缩相关指令zip/unziptar 总结 引言 Linux与我们熟悉的Window都是操作系统&#xff0c…

spring-aop入门

spring-aop入门 什么是AOP OOP(Object-Oriented Programming)面向对象编程,允许开发者定义纵向的关系,但并适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用。 AOP(Aspect-Oriented Programming),…

优思学院|质量管理六大思维陷阱【五】:有了控制图就能改进质量?

1. 引言 在工厂的生产过程中,质量控制是至关重要的。控制图是一种常见的质量管理工具,它可以帮助工厂监测过程的稳定性和质量表现,同时它也是六西格玛最重要的工具之一。然而,人们对于控制图的理解并不总是正确,有时被…

【中危】Kubernetes secrets-store-csi-driver 信息泄露漏洞

漏洞描述: Kubernetes secrets-store-csi-driver 是一个用于 Kubernetes 的 CSI 驱动程序,它提供了一种将外部密钥存储系统中的凭据注入到 Kubernetes Pod 的机制。 在 secrets-store-csi-driver 受影响版本中,当在 CSIDriver 对象中配置了…

操作系统期末复习简记(更新中~)

文件 定义:文件是以计算机硬盘为载体的存储在计算机上的信息集合(宽泛的) 属性:描述文件状态的信息,eg.名称,修改时间等等 基本操作:创建、打开、修改文件 文件的逻辑结构 1、无结构文件&#x…

【SpringMVC】统一异常处理 前后台协议联调 拦截器(文末赠书)

1,统一异常处理 1. 问题描述 在讲解这一部分知识点之前,我们先来演示个效果,修改BookController类的getById方法 GetMapping("/{id}") public Result getById(PathVariable Integer id) {//手动添加一个错误信息if(id1){int i …

JS BOM和DOM对象的尺寸

A scroll…..系列 scrollHeight: 获取对象的滚动高度。 scrollWidth:获取对象的滚动宽度 scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 内容距左边框的距离(不算padding与border) scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最…

智慧景区预约系统开发 实现游客自助游玩

旅游是我们休闲娱乐的重要手段之一,尤其是疫情放开以来,旅游成为很多人节假日的首选。绝大多数的旅游景区都是需要购票参观的,对于景区来说也是卖出的票越多,盈利越多。所以各大景区也一直都在拓展新的售票渠道来提升旅客数量。通…

JavaScript基础笔记

JavaScript 介绍 JavaScript 是什么 1JavaScript 书写位置 JavaScript 注释 JavaScript 结束符 JavaScript 输入输出语法 变量 变量是什么? 变量的基本使用 变量的本质 变量命名规则与规范 数组的基本使用 常量 数据类型 数据类型 – 数字类型(Number&…

基于ICA算法的图像融合matlab完整程序分享

用特定的算法将两幅或多幅图像综合成一幅新的图像。融合结果由于能利用两幅(或多幅) 图像在时空上的相关性及信息上的互补性,并使得融合后得到的图像对场景有更全面、清晰的描述,从而更有利于人眼的识别和机器的自动探测。 确保待融合图像已配准好且像素位宽一致,且融…