首页 > 解决方案 > 无限内存增长 IOS App (CFString) - 如何调试?

问题描述

我有一个在 UITableView 中显示图像和文本的 IOS 应用程序。当我上下滚动时,我得到了无限的内存增长。我已经使用分配来尝试找出这种内存增长的来源。请看下文。据我所知,CFString 占用了大量的内存。如图 2 所示,它似乎不是来自我的代码(基于 CFString 的 StackTrace)。请有人建议吗?我真的被困住了。我的应用程序在超过大约 2GB 的内存后滚动几分钟后崩溃。我将不胜感激有关如何调试内存问题根源的任何一般性指示。CFString 堆栈跟踪全部显示为灰色,我不确定如何继续诊断问题。

图 1 我正在查看 CFString 并且持久内存很大。

在此处输入图像描述

图 2 点击 CFString:

在此处输入图像描述

标签: iosswiftmemory-leaksout-of-memory

解决方案


尝试使用 Xcode 实用程序文件夹中的 Instruments 应用程序。具体来说,您需要 Leaks 仪器。它将找到泄漏的内存,然后帮助您确定该内存的分配位置。

运行您的应用程序一段时间,然后将其中断并检查您的堆。(使用起来相当复杂和棘手。比我在 SO 答案中解释的要多得多。我建议挖掘 WWDC 视频或其他使用它的教程。)

Xcode 中还有一个简单的内存图工具,可以标记泄漏的块,但它并没有提供太多信息。(它是调试控制台上方调试栏中的小图标之一。图标是 3 个小圆圈,它们之间有线条。)


推荐阅读