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

【Android面试八股文】Android性能优化面试题:怎样检测函数执行是否卡顿?

文章目录

  • 卡顿
    • 一、可重现的卡顿
    • 二、不可重现的卡顿
      • 第一种方案: 基于 Looper 的监控方法
      • 第二种方案:基于 Choreographer 的监控方法
      • 第三种方案:字节码插桩方式
      • 第四种方案: 使用 JVMTI 监听函数进入与退出
      • 总结
      • 相关大厂的方案
        • ArgusAPM
        • BlockCanary
        • QQ空间卡慢组件
        • Matrix
        • 微信广研
      • 参考文档

卡顿

卡顿意味着我们的App发生了掉帧,被使用者所感知。

而导致App卡顿的原因很多:UI绘制慢、内存使用不当(内存抖动)等等情况都会导致程序出现卡顿,而这些卡顿又分为:

  • 可重现
  • 不可重现

一、可重现的卡顿

有一部分的卡顿是可本地复现的,对于这种容易重现的场景,一般我们在开发及体验测试阶段容易注意得到,而定位卡顿的根源,我们常用的方法是通过 TraceViewSystrace 工具来抓取卡顿过程中函数的执行情况(堆栈,耗时,调用次数等)。

通过 TraceView 的可视化界面,我们可以具体知道某个过程中的调用栈信息及各个函数的执行次数与耗时,能比较直观的找到严重耗时的函数,帮助我们快速解决卡顿问题。

在这里插入图片描述

目前Traceview 已弃用。如果使用 Android Studio 3.2 或更高版本,则应改为使用 CPU Profiler

http://www.lryc.cn/news/395086.html

相关文章:

  • C语言7 控制语句
  • go mod 依赖管理补充2
  • 【Git】取消追踪多个文件或目录
  • 【Linux详解】进程等待 | 非阻塞轮询
  • 聊一下Maven打包的问题(jar要发布)
  • JavaScript中,正则表达式所涉及的api,解析、实例和总结
  • 【计算机】同步/异步
  • 谈大语言模型动态思维流程编排
  • 工厂自动化相关设备工业一体机起到什么作用?
  • 哈佛大学 || 概念空间中学习动态的涌现:探索隐藏能力
  • Dockerfile打包部署常用操作
  • ArcGIS:探索地理信息系统的强大功能与实际应用
  • Python 全栈体系【三阶】(二)
  • 【VUE】 深入理解 Vue 动态路由:简介、实际开发场景与代码示例
  • Linux x86_64平台指令替换函数 text_poke_smp/bp
  • 海南云亿商务咨询有限公司口碑怎么样?
  • 航空数据管控系统-②项目分析与设计:任务2:使用Git或SVN管理项目(可选任务,只介绍Git安装)
  • 【面试题】串联探针和旁挂探针有什么区别?
  • LeetCode42(接雨水)[三种解法:理解动态规划,双指针,单调栈]
  • STM32-ADC+DMA
  • 代码随想录算法训练营第六十二天 | 108. 冗余连接、109. 冗余连接II、复习
  • 昇思MindSpore学习笔记6-01LLM原理和实践--FCN图像语义分割
  • 【FFMPEG基础(一)】解码源码
  • 第二证券股市资讯:深夜!突然暴涨75%!
  • flutter 使用wechat_assets_picker的权限检测
  • Mojo入门案例教程(上手篇)
  • 如何在window执行mkfile
  • Nginx 是一个非常流行的 Web 服务器和反向代理服务器
  • mysql怎么调整缓冲区大小
  • 计算机组成原理学习笔记(一)