2011-08-24 84 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()函数。