了解线程状态
线程可以各种状态存在,例如Running(正在运行)、Runnable(可运行)、Runnable (Preempted)(可运行(被抢占))、Sleeping(休眠)、Uninterruptible Sleep(不间断休眠)、Stopped(已停止)、Idle(空闲)和Exit(退出)。有关每种状态的确切定义,请参阅监控和记录您的应用性能中的“线程状态”。确定性能问题的原因
线程状态可视化可以提供有关应用性能问题的见解,例如延迟增加、无响应、崩溃和行为不一致。下表列出了可能导致性能问题的原因,您可以根据线程状态信息进行确定。使用Vega Studio性能扩展
Vega Studio性能扩展在“Activity Monitor”和“Memory Monitor”的“Recording”(记录)视图中提供线程状态可视化。要解决JS应用中的性能问题,请完成以下步骤:- 在Activity Monitor中开始记录。
- 在应用中再现有问题的行为。
- 停止录制以生成Recording视图,其中包括带有线程状态信息的Traces(跟踪)视图。
分析线程状态数据
要确定应用性能问题,请执行以下操作:- 在Traces视图中分析线程状态数据。
- 检查线程状态数据是否与前面提到的任何原因相对应:线程长时间运行、CPU使用率过高或CPU争用。
使用案例
以下示例显示线程状态可视化如何帮助用户排除故障和优化应用性能。使用案例1:排除由于算法效率低下而导致的线程长时间运行故障
在测试VegaVideoApp时,您在调出主屏幕或任何详情页面时遇到了响应不佳的问题。 为了确定问题,您再现了应用中有问题的行为,同时在Activity Monitor中启动了记录。当记录停止时,Activity Monitor会生成一个Recording视图,包括带有线程状态信息的Traces视图。您检查了Traces,其中显示JS线程运行了长达5秒钟。这表明由于算法效率低下,线程长时间运行。
您检查了CPU分析器火焰图,由于getClassics方法,其中DetailsScreen花费了5秒钟。
在重新审视应用代码时,您注意到在对数据进行排序和筛选时代码效率低下,从而导致性能延迟问题。
使用案例2:解决滚动应用中CPU使用率过高的问题
使用React Native Flatlist组件(仅提供英文版)创建一个简单的滚动应用,用不同的颜色显示200行。使用Activity Monitor,您在滚动期间观察到线程状态视图中频繁出现“正在运行”状态,这表明CPU使用率过高。“CPU分析器火焰图”也显示出高活动性,这表明“Flatlist”组件的运行效率低下。
以下示例代码显示了如何在应用中添加“Flatlist”组件。
要了解“Flashlist”相较于“Flatlist”的优势,请参阅最佳实践。

