首页
学习
活动
专区
圈层
工具
发布

监测APP卡顿

一、UI更新原理和卡顿原因 在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,比如视图的创建、布局计算、图片解码...这就是界面卡顿的原因。...所以,卡顿造成的原因分为CPU卡顿和GPU卡顿,CPU卡顿可以用CADisplayLink来检测,UI更新卡顿可以用Runloop的mode来检测 监测卡顿:开一个子线程,利用displaylink或者...Runloop来监测卡顿; 收集堆栈:将卡顿时的堆栈收集起来; 上传记录:将卡顿上传到后台或自定义; 这里我引用一张微信开发团队的监测流程图: 二、Runloop检测卡顿 首先我们来看一个...dispatch_semaphore_t semaphore = instrance.semaphore; dispatch_semaphore_signal(semaphore); } 三、收集堆栈 收集堆栈信息以用来分析卡顿引起的代码

2.4K10

Android卡顿分析

一、卡顿原因 屏幕1秒60帧,平均每帧16.6毫秒,如果代码实现不佳,或者过于复杂,导致一帧绘制时间大于16.6毫秒,则无法完成绘制,造成丢帧,连续出现掉帧,在现象上表现为卡顿。...默认情况下,性能分析器只会将卡顿帧显示为有待调查的候选对象。在每个卡顿帧中,红色部分突出显示了相应帧超出其渲染截止时间的时长。...image.png 2、在Android 11上检测卡顿情况 对于搭载 Android 11(API 级别 30)的设备,CPU 性能分析器的 Frame Lifecycle 部分会显示捕获的轨迹。...image.png 3、在Android 10及更低版本上检测卡顿情况 对于搭载 Android 10(API 级别 29)及更低版本的设备,相关的操作系统图形管道信息会显示在 CPU 性能分析器系统轨迹中的单个部分...这些线程与界面呈现有关,可能是导致卡顿的原因。 如需在 Android 10 或更低版本上检测卡顿情况,请执行以下操作: 查看 Display 中的 Frames 轨迹。

3.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Impala查询卡顿分析案例

    ---- 最近在开发时遇到查询卡顿(stuck)的情况,感觉比较有代表性,因此记录一下排查过程。在生产环境中也可以用类似的方法找到卡顿的源头。...(7) Catalogd返回包含更新的topic version给Coordinator (8) Coordinator等到所有Coordinator都接收到了该version的更新时再返回给客户端 卡顿可能发生在上面任何一步中...查找卡顿源头 I. 找到Coordinator卡住的线程 查询是发给Coordinator的,因此从它开始。先查日志,找到这个查询相关的log。...回到Coordinator卡顿的分析,我们先是从日志找到了线程id为20747: I1101 09:52:17.002415 20747 Frontend.java:1256] a14a8bbbaf75bf19...总结 Impalad查询卡顿时,如果日志中无法发现异常,对于BE部分可以使用core dump或minidump来做线程堆栈分析,对于FE部分可以用jstack做分析。

    3.7K30

    APP&游戏需要关注Jank卡顿吗?

    从深层次分析在性能测试工作中这五部分起到的重要意义。 第一部分:FrameTime FrameTime 的定义:两帧画面间隔耗时(也可简单认为单帧渲染耗时)。 对于FrameTime和卡顿是否有关联?...第三部分:流畅度 流畅度与卡顿的关联可以用以下的流程图来大致展示: 641.png     流畅度影响卡顿。...备注:比如游戏中已预知的卡顿,如新UI弹出等造成卡顿,可认为是干扰,需要剔除,不应算在Jank,可通过web云上,框选右键删除干扰数据。 APP方面 APP也需要关注FPS及Jank。...通过这五部分的讲解,相信大家可以清楚的了解Jank卡顿对于APP&游戏的重要,以及其关注的侧重点,PerfDog正是是致力于为游戏&应用提升品质。...PerfDog是由WeTest腾讯质量开放平台发行的移动全平台iOS\Android性能测试工具,能快速定位分析性能问题,提升APP应用及游戏性能和品质,手机无需ROOT/越狱,手机硬件、游戏及应用无需做任何更改

    2K20

    Android深入卡顿分析与实践

    Systrace: simpleperf 优点:性能消耗很小,使用简单,修改后可立即验证 缺点:只能线下使用,用户卡顿路径无法收集完全 综合分析 主线程占用CPU比率,GC日志,线程数综合分析,...如下图 类加载过程 分析:通过分析Systrace发现核心服务类加载和验证花费了很多时间,很容易触发“多点耗时”造成卡顿,另外还有NetCore网络单例框架可能造成“单点耗时”卡顿,然而这些类是一进房就立即要使用的...结论: 1.线程增多影响主线程CPU切换时间片时间,从而抢占主线程时间,导致卡顿 2.新增30个线程会显著增加app内存,造成不必要的GC 五、方法与经验总结 优化方法导图 经验总结 1.使用APM平台查询卡顿和...通过Profiler发现卡顿问题&系统性分析问题 CPU Profiler抓取的方法调用trace,在横向上是按时序分布的,可以抓取一个阶段的trace,做横向和纵向的分析及优化 3....8.系统全面地分析问题 直接耗时容易发现和解决,但对于间接耗时如内存问题,CPU占用等问题则隐藏较深,我们既要针对常见的直接耗时问题加以预防和治理,针对间接卡顿和耗时问题也需要做出系统的分析和排查。

    3K11

    Android面试题之App的卡顿监控和卡顿优化

    卡顿优化 这里主要介绍卡顿优化方面的布局优化 布局优化 1、 在主线程中,加载SP,或者是缓存加载,JSON解析,可以放到Idelhander 2、 viewpager的懒加载,用viewpager2替换...LayoutInflflater.Factory2; 4、不支持加载包含 Fragment 的 layout 5、如果 AsyncLayoutInflflater 失败,那么会自动回退到UI线程来加载布局 卡顿监控的...com.meizu.flyme.launcher.Launcher#0 利用 SurfaceFlinger PageFlip 机制进行监控 使用 :adb service call SurfaceFlinger 1013 备注:需要系统权限 其他卡顿监控的工具...1、 systrace 一般用来检测滑动的情况,有没有卡顿掉帧 2、 BlockCanary卡顿监控原理:跟Looper中message有关,在取出message后,会先调用一个printer打印一个日志...,然后执行dispatchMessage方法,再又打印下日志,我们可以通过设置自己的实现printer接口的类,来监听日志打印,根据前后打印的间隔时间,超过阈值就输出日志 总结2种卡顿监控原理 Choreographer

    50410

    Android卡顿优化 | 卡顿单点问题监测方案

    ARTHook实战 小结 项目GitHub 背景介绍 前面提到过两种自动化自动化检测方案: AndroidPerformanceMonitor和ANR-WatchDog; 需要本方案的原因:自动化卡顿检测方案无法满足所有场景...; 如,有很多Message要执行, 但是所有Message的时间, 都没有达到自动化卡顿检测方案所配置的卡顿的判定阈值, 那这种情况,自动化卡顿检测方案对这些“较小型”的卡顿问题便无能为力了;...可是这些没有达到卡顿的判定阈值的“较小型”的卡顿问题, 却会一直影响用户体验,这显然是不行的!!...View绘制等; 下面以主线程IPC为例, 因为IPC其实是一个很耗时的操作, 但实际开发时很多时候都没有得到足够的重视, 偶尔还会在主线程进行IPC操作,以及频繁的调用, 而这种耗时其实很少达到卡顿的阈值...随后便可以进行详细的分析,统筹优化; 小结 可以利用ARTHook完善线下工具; 开发阶段Hook相关操作,暴露、分析问题; 完善体系化性能优化解决方案 ---- 参考: 慕课网 PackageManager

    3.1K20

    卡顿优化

    AndroidPerformanceMonitor implementation 'com.github.markzhai:blockcanary-android:1.5.0' AndroidPerformanceMonitor 是一个检测卡顿的开源库...而其使用与LeakCanary也比较相似,可以自主设置卡顿检测时间,检测到的卡顿同样是以Notification展示,在使用体验上也相当类似,与LeakCanary可以说是孪生兄弟。...CPU、IO及锁 ANR 测试 //给主线程造成卡顿,在子线程中获取锁,并让主线中等待20s,在让它获取锁         new Thread(new Runnable() {             ...检测组件 https://github.com/SalomonBrys/ANR-WatchDog 使用:new ANRWatchDog().start(); 原理 ANR-WatchDog同样是一个检测卡顿的检测库...AndroidPerformanceMonitor与 ANR-WatchDog 区别 AndroidPerformanceMonitor:监控Msg ANR-WatchDog:看最终结果 前者适合监控卡顿

    2.5K30

    分析RTP码流卡顿问题的工具

    在基于RTP的实时码流传输过程中,经常会遇到音视频卡顿、花屏的现象。对于这类问题,如何定位?...下面这个工具可以帮助分析类似问题: https://github.com/sigusr1/rtp_parse_from_pcap 一、实现思路 从传输的角度看,造成卡顿、花屏的常见原因如下: 接收端收到的帧不完整...定位这类问题,最快捷的方式是通过wireshark或者tcpdump抓包,然后进行分析。这样可以看出到底是发送端的问题还是接收端的问题,缩小排查范围。...必须保留每个报文的时间戳,这样才能分析传输过程中的耗时情况。 基于以上思路,可以用下面的数据处理流程来实现: ?...如下图所示,有一个帧间隔达到了500多ms,肯定会导致卡顿现象。 ? 同时命令行会有如下输出,提示帧间隔过大。最后一行对应的就是图中的波峰: ?

    5.4K40

    iOS卡顿优化

    按照60FPS的帧率,每隔16ms就会有一次VSync信号,1秒是1000ms,1000/60 = 16 卡顿的原因: iOS默认刷新频率是60HZ,所以GPU渲染只要达到60fps就不会产生卡顿。...RunLoop监听 原理:卡顿是在主线程进行了耗时的操作,可以添加Observer到主线程的Runloop中,通过Runloop状态切换的耗时,达到监控卡顿的目的。...卡顿监控起一个子线程定时检查主线程的状态,当主线程的状态运行超过一定的阈值,则认为主线程卡顿,从而标记为一个卡顿。...分析实现: 使用Runloop进行卡顿监控,定义一个阈值判断卡顿的出现,记录下来上报到服务器。...子线程Ping 根据卡顿发生时,主线程无响应的原理,创建子线程去循环ping主线程,ping之前先设置卡顿标志为True,再派发到主线程执行后设置标志为false,子线程在设置阈值时间内休眠结束后,根据标志判断主线程有无响应

    4.8K11

    【PerfDog专家课堂】APP&游戏需要关注Jank卡顿吗?

    从深层次分析在性能测试工作中这五部分起到的重要意义。 第一部分:FrameTime FrameTime 的定义:两帧画面间隔耗时(也可简单认为单帧渲染耗时)。 对于FrameTime和卡顿是否有关联?...第三部分:流畅度   流畅度与卡顿的关联可以用以下的流程图来大致展示: ?   流畅度影响卡顿。...第五部分:影响   从前面的知识了解到FrameTime、FPS、流畅度和Jank之间的紧密联系后,就可以顺其自然得出我们的结论:APP和游戏到底需不需要关注Jank卡顿呢?...备注:比如游戏中已预知的卡顿,如新UI弹出等造成卡顿,可认为是干扰,需要剔除,不应算在Jank,可通过web云上,框选右键删除干扰数据。 2、APP方面   APP也需要关注FPS及Jank。...通过这五部分的讲解,相信大家可以清楚的了解Jank卡顿对于APP&游戏的重要,以及其关注的侧重点,PerfDog正是是致力于为游戏&应用提升品质。

    4.3K21

    RunLoop总结:RunLoop的应用场景(四)App卡顿监测

    参考资料 关于今天要介绍的使用RunLoop 监测主线程卡顿的资料如下: 微信iOS卡顿监控系统 (这篇文章要首先阅读,了解有哪些情况会引起主线程卡顿,监测到卡顿后怎么处理等) 监控卡顿的方法 (使用...RunLoop监测卡顿的片段代码) 简单监测iOS卡顿的demo (使用RunLoop监测卡顿的例子) 原理 官方文档说明了RunLoop的执行顺序: 1....如果花费的时间大于某一个阙值,我们就认为有卡顿,并把当前的线程堆栈转储到文件中,并在以后某个合适的时间,将卡顿信息文件上传到服务器。...为了能够捕获到堆栈信息,我把timer的间隔调的很小(0.01),而评定为卡顿的阙值也调的很小(0.01)。 实际使用时这两个值应该是比较大,timer间隔为1s,卡顿阙值为2s即可。...我们不能将卡顿的阙值定的太小,也不能将所有的卡顿信息都上传,原因有两点,一,太浪费用户流量;二、文件太多,App内存储和上传后服务器端保存都会占用空间。

    1.6K31

    记移动平台崩溃卡顿的收集分析分享

    首先说一下项目背景,公司最近在做一个移动平台APP的开发,贴向于游戏方向,用户量也相对较大,加上项目中几个功能排期比较赶,导致开发中出来了不少问题,主要问题就是APP运行过程中的奔溃、卡顿、异常等问题。...网易云捕是网易内部一直在使用的一款质量跟踪系统,APP 质量跟踪、APP加密、漏洞扫描分析、数据统计分析,各种异常实时的邮件,短信,微信公众号报警,提供定制化的个性化报警等,现已经对外开放,其无论是功能...这个在非常重视APP质量的开发团队里很实用,让团队不错过任何一个重要的质量问题,后面在尝试时,发现还可以自定义参数,自定义异常上报,这个很实用。

    90580

    Android卡顿监控系统

    只要我们能在发生卡顿的时候,捕捉到主线程的堆栈信息和系统的资源使用信息,即可准确分析卡顿发生在什么函数,资源占用情况如何。...实验方法:ViVoX9 上运行微信读书App,使用卡顿监控与高频采样,和不使用卡顿监控的情况下,保持两次的操作动作相同,分析性能差异,数据如下: 关闭监控 打开监控 对比情况...卡顿堆栈上报到平台后,需要对上报的文件进行分析,提取和聚类过程,最终展示到卡顿平台。前面我们提到,每一次卡顿发生时,会高频采样到多个堆栈信息描述着这一个卡顿。...由于采样频率不低,因此出现卡顿后一般都有不少的卡顿,如此可找出重复次数最高的堆栈,作为重点分析卡顿问题,从而进行修复。...收集不同用户不同手机不同场景下的所有卡顿堆栈信息,可供分析,定位和优化问题。

    8.8K52

    Android BlockCanary卡顿检测

    本文介绍使用BlockCanary测试app卡顿并且做到log日志上报。...Blockcanary介绍 介绍 Blockcanary是@markzhai开发的检测app主线程卡顿工具,不需要在代码中插桩和debug代码就能检测出卡顿。...log日志 根据上面的配置代码并打包app,进行手工测试如果主线程卡顿超过1000ms,会在手机sdcard/BlockTest目录下生成卡顿日志。...卡顿文件包含几点: 发生时间 版本 imei cpu型号 内存 卡顿堆栈 上报log日志 之前方式的卡顿日志需要连接该设备把log手动导出来分析,或者在卡顿弹框中展示,这样并不能做到日志持久化和做后期的数据分析...扫描日志有两个方式,子线程定时扫描上传、app至于后台上传。 定时扫描上传 启动子线程 创建子线程 定时扫描文件 子线程启动以后,就可以定时扫描卡顿日志并上报。

    2.4K30
    领券