"AppFreeze"相关的文章
AppFreeze案例:FFRT 与 std::mutex 混用导致的死锁分析

AppFreeze案例:FFRT 与 std::mutex 混用导致的死锁分析

近期,某三方应用在鸿蒙系统上发生了多例 AppFreeze(应用无响应)事件。系统检测到主线程超时阻塞,强制终止了应用。通过抓取 AppFreeze 日志并结合 FFRT(Function Flow Runtime Kit)的基础理论,我们定位到了导致这一现象的根本原因:在 FFRT 并发模型中错误地使用了 C++ 标准库同步原语(std::mutex 和 std::condition_variable),导致 FFRT Worker 线程陷入内核态阻塞,进而引发任务堆积和死锁。
AppFreeze采样栈定位“IO阻塞”,解决鸿蒙应用中同步读写主线程超时问题

AppFreeze采样栈定位“IO阻塞”,解决鸿蒙应用中同步读写主线程超时问题

前面分享了“锁竞争”和“UI 渲染过载”导致冻屏的问题,这一篇将探讨“IO 阻塞”引发的冻屏问题。在鸿蒙应用开发中,如果在主线程执行同步文件读写操作,可能会阻塞主线程,导致应用卡顿甚至被系统杀死。本文将分析如何利用采样栈分析同步 IO 阻塞造成的AppFreeze问题。
AppFreeze采样栈定位“UI 渲染过载”,找出鸿蒙应用中主线程卡顿根因

AppFreeze采样栈定位“UI 渲染过载”,找出鸿蒙应用中主线程卡顿根因

上一篇讲了用AppFreeze 定位“锁竞争”引发的冻屏问题,这一篇将分析“UI 渲染过载”引发的冻屏问题。在 ArkUI 开发中,频繁的状态更新(State Update)和列表刷新(ForEach/LazyForEach)会导致主线程陷入密集的 Diff 计算和渲染任务,从而引发卡顿。本文将介绍如何利用采样栈识别 UI 渲染热点。