2011-08-24 93 views
2

我有一個適用於iOS的緩存系統,我想添加一個函數來記錄對象列表的內存使用情況。
那麼如何計算自定義對象的內存使用情況?ObjectiveC中指定對象的內存使用情況

+0

我認爲你可以找到答案[這裏](http://stackoverflow.com/questions/5895971/using-sizeof-equivalent-in-objective-c) – Xav

+0

@Xav,你爲什麼不張貼爲回答? –

+1

謝謝@Xav,關於objc運行時的文章真的很有趣。 – xhan

回答

2

你是在分配工作。使用class_getInstanceSize()將爲您獲取一個對象的實例大小,但不會獲取對象所引用的對象的實例大小。每個對象引用只會計爲一個4字節的指針,而不是被引用對象的實際實例大小。

你可能會很聰明,並且使用class_copyIvarList(),遍歷ivars並且詢問任何一個對象也是它的實例大小的ivar,然後遞歸地爲你的超類做同樣的事情,直到你打到根類。

或者您可以使用內存分配模板啓動儀器,並實時測量實際的內存使用情況。

+0

似乎是一項艱鉅的工作。還需要檢查對象是否已經計算過 – xhan

1

在Obj-C運行時查找class_getInstanceSize()函數。