Flutter真机调试随机崩溃,因内存过高被系统终止求解决
问题概述
Flutter App在M4芯片2024款MacBook Air + Xcode15.3 + iOS17.4.1真机调试时,会随机因内存占用过高崩溃,崩溃无固定触发点;但在Intel芯片2019款MacBook Air + Xcode14 + iOS15环境下完全正常。Xcode提示系统因内存占用过高杀死App,用Xcode分析工具未找到内存泄漏点。
Xcode错误详情:
The app “Runner” has been killed by the operating system because it is using too much memory. Domain: IDEDebugSessionErrorDomain Code: 11 Recovery Suggestion: Use a memory profiling tool to track the process memory usage.
flutter doctor -v显示环境无异常,Flutter版本为3.19.5,运行在Rosetta模式下。
可行解决方案
1. 关闭Rosetta运行Flutter
M系列芯片Mac建议使用原生arm64模式运行Flutter,避免Rosetta带来的兼容性问题:
- 右键终端图标 → 显示简介 → 取消勾选「使用Rosetta打开」
- 执行
flutter clean && flutter pub get,重新编译运行App
2. 调整Xcode调试配置
Xcode15+在M系列芯片上的调试机制可能额外占用内存,修改以下配置:
- 打开
Product > Scheme > Edit Scheme→ 切换到Run > Diagnostics标签页:- 勾选Memory Graph,设置触发时机为
On Resource Exception - 开启Malloc Stack Logging,选择
Live Allocations Only - 暂时关闭
View Debugging(部分场景下该功能会导致内存异常)
- 勾选Memory Graph,设置触发时机为
3. 升级Flutter到最新稳定版
Flutter 3.19.5发布于2024年3月,后续版本修复了大量M系列芯片与Xcode15的兼容问题:
flutter channel stable flutter upgrade
升级后执行flutter clean && flutter pub get再测试。
4. 排查第三方依赖的arm64兼容性
旧版第三方插件可能未适配M系列芯片,导致内存泄漏:
- 执行
flutter pub outdated查看依赖版本,升级所有依赖到最新稳定版 - 重点检查图片加载、WebView、原生交互类插件(如
webview_flutter、image_picker)
5. 用Flutter DevTools深度分析内存
Xcode工具对Flutter Dart层内存泄漏的检测不够精准,改用DevTools:
- 执行
flutter pub global activate devtools - 运行App后执行
flutter devtools,切换到Memory标签页 - 录制内存快照,对比不同时间点的对象占用,重点排查未释放的
State、StreamController、AnimationController类
6. 禁用Xcode CoreDevice调试模式
Xcode15引入的CoreDevice可能存在兼容性问题,切换到传统调试模式:
- 打开Xcode偏好设置 →
Locations→ 清空Derived Data - 终端执行:
defaults write com.apple.dt.Xcode IDESkipCoreDeviceEnabled -bool YES
重启Xcode后重新运行App
补充排查方向
如果以上方案无效,可创建新的Flutter空白项目,逐步迁移现有代码和依赖,排查是否是Podfile、Info.plist等配置文件的兼容性问题。
内容的提问来源于stack exchange,提问作者OverdoseB12
相关产品推荐
相关产品推荐

