Android---内存性能优化

news2024/11/24 16:33:21

内存抖动

  \bullet 内存抖动是由于短时间内有大量对象进出新生区导致的,内存忽高忽低,有短时间内快速上升和下落的趋势,分析图呈锯齿状

  \bullet 它伴随着频繁的 GC,GC 会大量占用 UI 线程和 CPU 资源,会导致 APP 整体卡顿(因为 GC 在回收内存时会停止工作线程),甚至有 OOM 的可能(原因:在新生代创建大量对象,而给新生代分配的空间又比较少,所以它就会占用一部分老年代的空间,然后此时有大对象满足了从新时代进入老年代的条件,而老年代里因为空间不够,再加上没有一块连续的空间分配给这个大对象,这时候就会报 OOM 错误)。

内存泄漏

  \bullet 程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费。

判断对象的存活---可达性分析

如果一个对象是根可达,那它就不会被回收;如果是根不可达,那么它就会被回收。 而内存泄漏这是,一个对象满足根可达,但它却不可用了。

内存泄漏的典型案例:一个静态变量引用了一个 Activity,而这个静态变量是全局的,只要 APP 进程没有被杀死,这个静态变量则一直存在。而 Activity 已经执行了生命周期 onDestory(),但是这个 Activity 被静态变量所应用又根可达,那么这个 Activity 就发生了内存泄漏。

内存分析工具

1. Android Profiler

内存性能分析器是 Android Profiler 中的一个组件,可帮助我们识别可能会导致应用卡顿甚至崩溃的内存泄漏和内存抖动。它显示一个应用内存使用量的实时图表,让我们可以

  \bullet 捕获堆转储

  \bullet 强制执行垃圾回收

  \bullet 跟踪内存分配

2. MAT(Memory Analyzer Tool)

内存快照对比,为了更有效率的找出内存泄漏的对象,一般会获取两个堆转储文件(先 dump 一个,隔段时间再 dump 一个),通过对比后的结果可以很方便定位。

优化案例

字符串的拼接每次都会创建一个新的字符串对象,所以尽量使用 StringBuilder 来完成,StringBuilder 内部是操作一个字符数组来完成的。

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

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

相关文章

07 dubbo源码学习_集群Cluster

1. 入口2. 源码分析2.1 FailbackClusterInvoker2.2 FailoverClusterInvoker 失败自动切换2.3 FailfastClusterInvoker 快速失败2.4 FailsafeClusterInvoker 失败安全2.4 FailsafeClusterInvoker 并行调用多个服务提供者,只要有一个返回,就立即响应3. 如何使用本篇主要介绍集群…

Python VTK STL 映射三维模型表面距离

目录 前言: 效果: 实现步骤: Code: 前言: 本文介绍了Python VTK映射三维模型表面距离,通过如何使用VTK计算两个三维模型(stl)的表面距离,并将其距离值以颜色映射到模型,可用于对比 两相模型…

智慧养老平台建设方案word

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 1、 总体设计 1.1 建设原则 养老机构智能化管理工程是一项涉及多学科知识的复杂的系统工程,养老机构智能化管理围绕机构发展战略,立足机构需求&…

超星项目er图,进程

一.er图 二. 进程:发现之前的写的分类太乱而且服务端与客户端未分离,于是分离客户端与服务端,然后将客户端的界面三个程序整理放在三个包下,在服务端与客户端的数据交互方面采用序列化与反序列化进行功能判断采用以及数据传输&a…

WPF入门教程(六)--依赖属性(2)--属性值优先级与继承

一、 依赖属性的优先级 由于WPF 允许我们可以在多个地方设置依赖属性的值,所以我们就必须要用一个标准来保证值的优先级别。比如下面的例子中,我们在三个地方设置了按钮的背景颜色,那么哪一个设置才会是最终的结果呢?是Black、Re…

【论文阅读】On clustering using random walks

《On clustering using random walks》阅读笔记 1. 问题建模 1.1 问题描述 let G(V,E,ω)G(V,E,\omega)G(V,E,ω) be a weighted graph, VVV is the set of nodes, EEE is the edge between nodes in VVV, ω\omegaω is the function ω:E→Rn\omega&#xff1a…

网络基础2【HTTP、UDP、TCP】

目录 一.应用层 1.协议 2.网络版计算器 3.HTTP协议 (1)了解url和http (2)http的用处 (3)urlencode和urldecode (4)http协议格式 4.HTTPS协议 (1)加密…

《花雕学AI》用ChatGPT创造猫娘角色:人工智能角色扮演聊天对话的风险与对策

出于好奇心,我以“ChatGPT,调教猫娘”为题,开始了解ChatGPT角色扮演提示语的用法。ChatGPT给出的介绍是,调教猫娘是一种利用ChatGPT的角色扮演功能,让模型模仿一种类似猫的拟人化生物的行为和语言的活动,并…

【云原生网关】apisix使用详解

目录 一、apisix介绍 1.1 apisix是什么 二、apisix特点 2.1 多平台支持 2.2 全动态能力 2.3 精细化路由 2.4 对运维友好 2.5 多语言支持 三、apisix优势 3.1 apisix生态全景图 3.2 apisix定位 3.3 apisix优点 3.4 与nginx对比 四、apisix应用场景 4.1 Load Bala…

设计模式-结构型模式之桥接模式

2. 桥接模式2.1. 模式动机设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:第一种设计方案是为每一种形状都提…

Python 基础(七):常用运算符

❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录一、算术运算符二、按位运算符2.1 按位与 &2.2 按位或 |2.3 按位异或 ^2.4 按位取反…

Three.js教程:顶点颜色数据插值计算

推荐:将 NSDT场景编辑器 加入你3D工具链 其他工具系列: NSDT简石数字孪生 顶点颜色数据插值计算 上节课自定义几何体给大家介绍了一个顶点位置坐标概念,本节课给大家介绍一个新的几何体顶点概念,就是几何体顶点颜色。 通常几何体…

python学习笔记(二)IF、FOR、WHILE、break、continue、函数定义与调用、面向对象

笔记二 流程控制if条件语句for循环语句while循环语句break 和continue python 函数定义与调用函数与调用函数的脚本分离脚本模板函数参数匿名参数变量作用域全局变量与局部变量 python面向对象类的创建实例的创建属性、方法的访问属性的添加、删除和修改属性的访问python内置类…

( “树” 之 前中后序遍历 ) 144. 二叉树的前序遍历 ——【Leetcode每日一题】

基础概念:前中后序遍历 1/ \2 3/ \ \ 4 5 6层次遍历顺序:[1 2 3 4 5 6]前序遍历顺序:[1 2 4 5 3 6]中序遍历顺序:[4 2 5 1 3 6]后序遍历顺序:[4 5 2 6 3 1] 层次遍历使用 BFS 实现,利用的就是 BFS…

写不了博客了吗?

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

像素的奇妙冒险:使用 Python 玩转彩色图片的灰度处理

文章目录 参考描述模块PillowPILPillow获取 Numpy获取 使用 Pillow 实现图片的灰度处理ImageOps.grayscale()convert() 原理灰度模式与彩色模式图片表示与三维数组ImageOps.grayscale() 与 convert(L) 背后的逻辑心理学灰度加权公式 Python 实现灰度模式下的灰度图片彩色模式下…

基于遥感的自然生态环境检测——实验三:生态因子提取

实验三:生态因子提取 一、实验目标 生态因子生成;生态因子归一化;生态环境评价 二、实验内容 根据经过大气校正后的影像生产土地覆盖指数、土壤指数以及坡度等,对土地覆盖指数、土壤指数以及坡度进行密度分割归一化&#xff1…

scikit-learn

一段时间只做一个事情。 比如不要想同时学习flink和scikit-learn。这实在是太难了。 pandas numpy pip install scikit-learn 使用的是venv环境 太难了。。 https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-mode…

建立人力资源运营团队的五个步骤

作为小企业主,设置人力资源运营可能不是您的首要任务。但是,随着您扩大运营规模和员工人数,您可能会遇到合规性和员工敬业度问题,从而阻碍您的业务增长。组建一个团队来照顾您的人力资源运营和员工可以让您专注于改进您的产品和满…

AI独立开发者:一周涨粉8万赚2W美元;推特#HustleGPT GPT-4创业挑战;即刻#AIHackathon创业者在行动 | ShowMeAI周刊

👀日报&周刊合辑 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 这是ShowMeAI周刊的第7期。聚焦AI领域本周热点,及其在各圈层泛起的涟漪;拆解AI独立开发者的盈利案例,关注中美AIG…