15

“内存”使用图表/图形在 XCode 5 调试导航器窗口中究竟代表什么?

我有一个禁用 ARC 且没有故事板/xib(即旧样式)的 iOS 应用程序项目。使用保留/释放/自动释放手动完成所有内存管理。

当我在 XCode 5 中调试项目时,内存饼图/图表显示随着应用程序运行内存使用量逐渐增加,半小时内内存占用量超过 1 GB。

粗略地说,它每 2 到 3 秒不断增加 0.1 到 0.3 MB,内存下降/减少非常罕见(幅度 < 0.1 MB 每 30 秒)。

在此处输入图像描述

这是关于内存管理的问题(内存泄漏)吗?我进行了内存分析(通过 XCode 4.6 上的 Instruments 使用分配/内存泄漏),但没有发现任何泄漏。

4

3 回答 3

48

自己找到答案。不幸的是,我有 NSZombieEnabled(僵尸对象)用于调试模式 - 见下文 - (菜单产品>方案>编辑方案

在此处输入图像描述

通常 NSZombieEnabled 工具甚至会将释放的对象保留在内存中,以帮助开发人员找到过度释放的对象。请参阅此链接 -什么是 NSZombie?

在我取消选中“启用僵尸对象”选项后,即使在半小时的应用程序使用后,内存使用量也稳定在大约 10 mb(并不总是增加) - 见下文 -

在此处输入图像描述

底线-当您想分析内存使用情况时,请确保清除“启用僵尸对象”。

于 2013-10-17T15:00:49.907 回答
3

它只是测量您的应用程序使用的内存。所以如果它在增加它一定是内存泄漏。

在使用泄漏分析工具时,我会将其用作指南。它可能会帮助您找到泄漏,但使用所有自动化工具可能无法全部找到。由于某些代码片段(尤其是更动态的片段)可能很难预测它们对自动化工具的记忆力。

于 2013-10-16T02:17:31.093 回答
1

我看到一个问题,即内存(堆)在繁重的处理中无限增长,但在没有 Xcode 的情况下运行完全相同的二进制文件时;内存使用很好。记得在 Xcode 之外进行测试——不知道原因是什么。NSZombies 和所有其他调试选项都已关闭

于 2015-11-16T01:26:24.563 回答