NSDictionary和NSArray的内存占用

问题描述 投票:2回答:2

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

这在内存使用方面是一项昂贵的操作吗?有什么好方法可以测试它?

cocoa macos nsarray nsdictionary
2个回答
2
投票

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

根据我的经验,NSDictionaryNSArray在内存使用方面都非常有效。我已经编写了几个应用程序来存储来自.csv.xml文件的数千个键/值,并且当NSDictionary被填满时,内存使用量会有相当线性的增加。我的建议是,如果你可以为它们构建单元测试,可以在某些极端情况下使用Instruments Profiler。

我不确定我理解为什么你要把条目存储在NSDictionaryNSArray中。

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

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


1
投票

Apple的集合类比你或我创建的更高效,我不会担心有数千个小条目的字典,请记住,当添加到字典中时,值不会被复制,但键是。据说这只是记忆中你需要的东西。

© www.soinside.com 2019 - 2024. All rights reserved.