在 macOS 活动监视器中通过“取样进程”生成实时堆栈采样,可定位卡顿、高 CPU 或死循环的函数级原因;操作包括启动活动监视器、筛选进程、执行取样或 Spindump,并分析报告中的采样次数、线程调用频次与底层瓶颈函数。

在 macOS 活动监视器中生成实时进程堆栈采样,核心操作是“取样进程”——它会捕获目标进程在几秒内的线程调用栈快照,帮助你定位卡顿、高 CPU 或死循环的函数级原因。
快速启动并定位目标进程
按下 Command + 空格 打开聚焦搜索,输入“活动监视器”并回车启动。在顶部菜单栏选择 显示 > 所有进程,分层显示,便于识别父子关系;右上角搜索框可直接输入进程名(如“Chrome”或“node”)快速过滤。
执行堆栈采样(Spindump 级别)
选中目标进程后,点击窗口左上角的 系统诊断选项(图标为齿轮+问号),从下拉菜单中选择:
- 取样进程:默认采集约 3–5 秒,生成带线程 ID、函数调用频次和栈深度的文本报告;
- 若进程已无响应,可选 Spindump,它会自动检测卡死状态并生成更详细的阻塞分析。
解读采样结果的关键信息
弹出的报告文件以纯文本呈现,重点关注:
- 开头的“Sampled N times”说明总采样次数;
- 每个线程块以“Thread N”开头,其下按调用频次降序列出函数名(如 objc_msgSend、dispatch_worker_thread);
- 高频出现的底层函数(尤其是重复出现在多线程中)往往是性能瓶颈点;
- 若看到大量 mach_msg_trap 或 __psynch_cvwait,可能涉及锁竞争或等待 I/O。
进阶技巧提升诊断效率
- 在“能耗”或“CPU”标签页中,先按 CPU% 或 能耗影响 排序,优先对排在前列的进程采样;
- 采样前关闭无关应用,减少干扰噪声;
- 同一进程可多次采样对比,观察热点函数是否稳定;
- 报告支持复制粘贴,适合发给开发者或贴入调试文档中协作分析。


















