SuperAPI AI 工具集

axiom-memory-debugging

测试与质量

查看项目

更新于 10-16 00:23

技能介绍

用途:用于诊断 iOS 应用的内存泄漏与内存压力崩溃。核心观点是约 90% 的内存泄漏集中在三种模式:循环引用、定时器/观察者未清理、集合持续增长;应先用工具系统诊断,不要猜。

适用信号:内存持续增长(如 50MB→100MB→200MB 不收敛)、运行 10–15 分钟后无报错崩溃、设备日志反复出现内存警告、视图控制器 dismiss 后不释放、同一操作重复执行导致线性增长。需区分泄漏(持续增长至崩溃)与正常缓存(停在固定值)。

主要能力:给出诊断流程——检查设备日志中的内存压力/Jetsam 记录;用 Xcode 的 Memory Graph Debugger 找紫色或红色循环引用链;用 Product→Profile 的 Memory、Leaks、Heap Allocations、VM Tracker 模板做重复操作验证。介绍 deinit 日志验证释放、Jetsam 与内存超限的区别、用 MetricKit 监控后台退出、后台清理缓存与状态恢复。

常见模式与修复:定时器必须 invalidate() 并置 nil(Combine 的 Timer.publish 可自动清理);通知观察者需 removeObserver 或用 Combine 存入 cancellables;闭包对 self 的强捕获改为 [weak self];相互强引用改为弱引用;用 AnyObject 协议做代理避免闭包捕获控制器;PhotoKit 的 requestImage 需在 prepareForReuse 中 cancelImageRequest,类似有 AVAssetImageGenerator 与 URLSession 取消。

工作流:确认泄漏(5 分钟)→ 定位(10–15 分钟)→ 修复并复验;复合泄漏先修最大的再复测。对不可复现(Heisenbug)场景,用 deinit 日志、隔离触发路径、MetricKit 生产监控排查。

限制与注意:资料未提供该技能的具体安装命令与平台支持细节;使用前提是具备 Xcode 与 iOS 调试环境。常见错误包括只加 [weak self] 而不 invalidate、invalidate 后不置 nil、把 AnyCancellable 存为局部变量、误用 Instruments 模板。命令示例:xcrun xctrace record --template "Memory" --output memory.trace;leaks -atExit -excludeNoise YourApp。