2

我真正需要回答的一个快速问题:

哪个使用更多的内存?

百万个对象还是NSMutableArray一百万个对象? NSMutableArrays

还会有区别吗?

4

2 回答 2

1

一百万个数组将使用更多的内存。

于 2013-07-11T16:51:32.643 回答
1

一百万个带有一个对象的 NSMutableArrays 会消耗更多的内存。

假设一个基本的 NSMutableArray 实现,它的元素有一个指针和一个大小:

  • 指针将是 4 到 8 个字节
  • 大小为 4 到 8 个字节
  • 那么每个实例将需要两次分配(一个用于对象,一个用于数组),这意味着这些地址被跟踪到某个地方。
  • 添加一个指针isa,另外 4 到 8 个字节

现在这不一定完全是 NSMutableArray 的实现方式,但它让您了解通用实现中每个实例的内存成本。

那么,您是否愿意将所有这些部分相加,并且:

  • 加 1000000 *sizeof(int*)
  • 还是乘以 1000000?

这应该让您知道 1M 数组将消耗更多内存。当然,如果您需要实数,可以使用 Instruments 进行测试。

于 2013-07-11T17:19:27.483 回答