使用Intruments 检测

13 阅读1分钟

Time Profile 通过间隔一定的时间,检查CPU上运行的内容来收集数据,对于每个样本,它都会检查CPU上当前正在运行哪个函数。

Use **os_signpost** or other instruments to measure precise runtime or how often specific work is performed

Instruments检测到主线程无响应,并将响应的间隔标记为可能出现挂起

主线程无响应主要有2种情况

  1. 主线程仍然忙于处理其他活动,在这种情况下 主线程将显示大量CPU活动
  2. 另一种情况是主线程阻塞,通常是因为主线程正在等待其他地方完成某些工作,当主线程阻塞,主线程上几乎没有CPU活动

Hang

分为同步挂起和异步挂起

之所以称为异步挂起,是由于主队列上正在进行的dispatch_async活动,或在 main actor上异步运行的Swift Concurrency引起的,但是任何让主线程投入工作原因都可能导致挂起

分析主线程阻塞,

主线程阻塞时,CPU没有活动,可以借助Thread States工具,

阻塞线程的另一个常见原因是锁或信号量,使用锁和信号量时,注意避免阻塞主线程

image.png

无论你在主线程做什么事情,都应在100毫秒内完成,以便释放主线程重新进行事件处理