当前位置: 首页 > news >正文

安卓应用卡顿、性能低下的背后原因

安卓应用卡顿或性能低下的主要原因是垃圾回收器(GC)运行过于频繁。
当GC运行时,应用本身实际上并未运行。

在这里插入图片描述

通常情况下,为了实现流畅的UI渲染,安卓应用需要每16毫秒更新一次UI(考虑到60FPS的刷新率,即1000毫秒/60 ≈ 16毫秒)。

因此,如果GC运行时间过长,应用无法及时更新UI,导致本来高刷的屏幕出现了跳帧,从而表现出卡顿。

Google目前给出了一些解决办法:https://support.google.com/android/answer/7667018

导致安卓应用卡顿的一些最重要原因:

  1. 主线程任务过重
  2. 糟糕的UI/UX设计
  3. 瓶颈效应
  4. 过多的线性处理

1. 主线程任务过重:
多线程并非万能药。如果应用线程模型存在阻塞、等待等问题,即使拥有多CPU/多核心也无法发挥优势。当负载增加时,不充分的并发处理能力会影响应用性能,此时单纯增加CPU数量也无济于事。

2. 糟糕的UI/UX设计:
如果用户界面本身设计不好,那不管是什么系统来了也没用。

3. 瓶颈效应:
一个应用的运行速度只能和系统中最慢的环节一样快。这是因为网络、数据库(DB)和应用服务器都需要足够快才能确保最佳性能。最常见的瓶颈点包括代理服务器、Web服务器、数据库、路由器和中间件。通过减少对中心辐射型(hub/spoke)结构的依赖,使用冗余的复制基础架构,并消除单点故障来减少瓶颈。

4. 过多的线性处理:
有时,应用需要进行大量处理,这涉及对海量数据进行大量计算,非常耗时。

相关文章:

  • goner/otel 在Gone框架接入OpenTelemetry
  • stable-diffusion windows本地部署
  • Spring AI 集成 DeepSeek V3 模型开发指南
  • 【C++】C++函数指针详解与实用技巧
  • 小白借助ai对全栈进行浅浅理解(学习笔记)-Lambda、Optional 避免空指针与新的日期时间 API
  • 南邮计科电工电子实验第五次课与非门设计数字锁逻辑电路小测答案
  • 线程池的核心参数和线程创建方式,线程和进程
  • 介绍Unity中的Dictionary
  • 【RAG技术全景解读】从原理到工业级应用实践
  • 树莓派5+Ubuntu24.04 LTS串口通信 保姆级教程
  • Mockoon 使用教程
  • 解决:‘java‘ 不是内部或外部命令,也不是可运行的程序-Java环境变量配置(含JDK8、JDK21安装包一站式配置)
  • 垃圾厌氧堆肥发酵实验台试验装置
  • 直接用字符串方式 split(“。“) 来切句,虽然能把句子拆开,但无法和 BERT 模型的 token 位置对应(embedding 用不上)
  • 两种方法求解最长公共子序列问题并输出所有解
  • Android学习总结之算法篇八(二叉树和数组)
  • 可视化图解算法35:在二叉树中找到两个节点的最近公共祖先(二叉树的最近公共祖先)
  • 【LeetCode】删除排序数组中的重复项 II
  • 2025年渗透测试面试题总结-某步在线面试(题目+回答)
  • 开启智能Kubernetes管理新时代:kubectl-ai让操作更简单!
  • 保证断电、碰撞等事故中车门系统能够开启!汽车车门把手将迎来强制性国家标准
  • 铲屎官花5万带猫狗旅行,宠旅生意有多赚?
  • 【社论】以法治力量促进民企长远健康发展
  • 云南临沧一行贿案金额认定比受贿案多41万,重审时检方变更金额起诉
  • 央行宣布优化两项支持资本市场的货币政策工具
  • 中国公民免签赴马来西亚的停留天数如何计算?使馆明确