在卡顿持续数秒甚至卡死场景下,频繁抓取相同堆栈毫无意义且会显著拉高性能开销。退火算法用于缓解这一问题: 子线程每次检测到主线程卡顿后获取主线程堆栈并存入内存。 把当前堆栈与上次记录的堆栈做比对: 若堆栈不同,则获取并写入新的线程快照文件。 若堆栈相同,则跳过写入,并按照斐波那契数列递增检测时间间隔。 直到没有卡顿或捕获到不同堆栈,才回到正常采样频率。 这样既避免了同一卡顿生成大量重复文件,也保证 SDK 不会在主线程卡死时持续高频写盘,显著降低对 App 的性能影响。