ios - 无限内存增长 IOS App (CFString) - 如何调试?
问题描述
我有一个在 UITableView 中显示图像和文本的 IOS 应用程序。当我上下滚动时,我得到了无限的内存增长。我已经使用分配来尝试找出这种内存增长的来源。请看下文。据我所知,CFString 占用了大量的内存。如图 2 所示,它似乎不是来自我的代码(基于 CFString 的 StackTrace)。请有人建议吗?我真的被困住了。我的应用程序在超过大约 2GB 的内存后滚动几分钟后崩溃。我将不胜感激有关如何调试内存问题根源的任何一般性指示。CFString 堆栈跟踪全部显示为灰色,我不确定如何继续诊断问题。
图 1 我正在查看 CFString 并且持久内存很大。
图 2 点击 CFString:
解决方案
尝试使用 Xcode 实用程序文件夹中的 Instruments 应用程序。具体来说,您需要 Leaks 仪器。它将找到泄漏的内存,然后帮助您确定该内存的分配位置。
运行您的应用程序一段时间,然后将其中断并检查您的堆。(使用起来相当复杂和棘手。比我在 SO 答案中解释的要多得多。我建议挖掘 WWDC 视频或其他使用它的教程。)
Xcode 中还有一个简单的内存图工具,可以标记泄漏的块,但它并没有提供太多信息。(它是调试控制台上方调试栏中的小图标之一。图标是 3 个小圆圈,它们之间有线条。)
推荐阅读
- javascript - Firebase 使用 autoid 遍历字段
- dynamics-crm - 我在哪里可以找到学习动态 365 crm 模型驱动应用程序开发的最佳资源
- php - 每个无效输入值的自定义异常
- c# - 奇怪的 Console.Write() 行为
- python - 无法使用 Python 连接到在不同端口运行的 Postgresql
- laravel - RESTful API和Web路由的正确方法是什么
- android - 形状的渲染顺序
- azure-cosmosdb - EfCore 3.1 CosmosDb 查询无法翻译
- angular - 如何使用可选路径前缀定义角度路径
- python - 当监视目录中的文件更改时,使用看门狗和 tkinter 打开 GUI 对话框