我真正需要回答的一个简单问题:
哪个使用更多内存?
一个带有一百万个对象的NSMutableArray
或者带有一个对象的一百万个NSMutableArrays
?
会有区别吗?
最佳答案
一百万个带有一个对象的 NSMutableArrays 会消耗更多内存。
假设一个基本的 NSMutableArray 实现,它有一个指针和元素的大小:
- 指针为 4 到 8 个字节
- 大小为 4 到 8 个字节
- 那么每个实例都需要两次分配(一次用于对象,一次用于数组),这意味着这些地址会在某个地方进行跟踪。
- 为
isa
添加一个指针,另外 4 到 8 个字节
现在这不一定是 NSMutableArray 的实现方式,但它让您了解通用实现中每个实例的内存成本。
那么您是否愿意将所有这些部分相加:
- 添加 1000000 *
sizeof(int*)
- 或者乘以 1000000?
这应该让您知道 1M 数组将消耗更多内存。当然,如果您需要实数,您可以使用 Instruments 进行测试。
关于iphone - NSMutableArrays 的最佳内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599029/