2013-07-11 24 views

回答

1

有一個對象的一百萬個NSMutableArrays會消耗更多的內存。

假設它具有一個指針和一個大小爲它的元素基本的NSMutableArray實現:

  • 指針將是4到8個字節
  • 大小將是4至8個字節
  • 然後每個實例需要兩個分配(一個用於對象,另一個用於數組),這意味着這些地址在某處被跟蹤。
  • 添加一個指針isa,另外4到8個字節

現在,這是不一定的NSMutableArray究竟是如何實現的,但它可以讓你在一個通用的實現在每種情況下的內存成本的想法。

所以你寧願採取所有這些部分之和:

  • 增加1000000 * sizeof(int*)
  • 或乘以1000000乘以?

這應該給你一個想法,即1M數組將消耗更多的內存。當然,如果您需要實際的數字,您可以使用儀器進行測試。

+0

感謝您的支持。我意識到我可以輕鬆地在一個數組中創建100萬個數組,並且已經完成了一些測試。由於我沒有10個聲望,我不能發佈自己的答案和我使用的代碼。無論如何,結果如下:一個陣列中有一百萬個對象:峯值= 26.4MB,穩定= 11MB,時間:2.052秒。 有一個對象的一百萬個數組:峯值= 98.2MB,穩定= 11.6 MB,時間:2.614秒。我覺得這很有趣。 – alicooke

1

一百萬個數組會使用更多的內存。