cocoa - NSDictionary 和 NSArray 的内存占用

标签 cocoa macos nsarray nsdictionary

我正在从事的项目要求我在缓冲区中临时存储数百个有时甚至数千个条目。最简单的方法是将每个条目存储在 NSDictionary 中,并将所有条目存储在 NSArray 中。每个 NSDictionary 包含大约十几个对象(NSStringsNSNumbers)。在整个操作过程中,NSArray 及其字典保留在内存中,因此我的问题。

就内存使用而言,这是一个昂贵的操作吗?测试它的好方法是什么?

最佳答案

Instruments 包含内存监控模块。在仪器的左下角,单击齿轮图标,然后选择“添加仪器”>“内存监控”。 Apple's documentation应该可以帮助您了解如何使用 Instruments 监视内存。另请参阅this question .

根据我的经验,NSDictionaryNSArray 在内存使用方面都相当高效。我编写了几个应用程序,它们存储 .csv.xml 文件中的数千个键/值,并且内存使用量随着 NSDictionary 已填满。我的建议是在某些极端情况下使用 Instruments 分析器(如果您可以为它们构建单元测试)。

不过,我不确定我是否理解为什么您将条目存储在 NSDictionaryNSArray 中。

如果您达到内存使用上限,您可能需要考虑的一件事是将条目转换为 SQLite 数据库,然后为您想要查找的列建立索引。

编辑:请务必查看this question如果您想深入了解 iPhone 内存消耗。

关于cocoa - NSDictionary 和 NSArray 的内存占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259840/

相关文章:

objective-c - 从 nsdictionary 中获取 nsdictionary 和 nsstring 值

cocoa - NSButton 单击时背景为白色

objective-c - NSArray 使用的排序算法是否稳定?

Android Studio 无法在 OSX 上通过 ADB 连接

objective-c - 在非空数组上获取 'index 0 beyond bounds for empty array' 错误

ios - 数组?没有名为 "Generator"的成员

objective-c - Cocoa:加载一个包,其中一些类继承自自定义框架

macos - 从 macOS 10.11 开始,当 LSSharedFileListInsertItemURL 已弃用时,如何添加 LoginItems?

c - 简单的 C 程序在 OS X 上编译但不在 Fedora 16 上编译,包含但未使用 math.h

c++ - 工作的 C++ 程序在不同的计算机上运行时出现段错误,两台 Mac