【问题标题】:Memory usage for specify objects in ObjectiveCObjective C 中特定对象的内存使用情况
【发布时间】:2011-11-02 15:15:27
【问题描述】:

我有一个 iOS 缓存系统,我想添加一个函数来记录对象列表的内存使用情况。
那么如何计算自定义对象的内存使用量呢?

【问题讨论】:

  • 我想你可以找到答案here
  • @Xav,你为什么不把它作为答案发布?
  • 感谢@Xav,关于 objc 运行时的文章真的很有趣。
  • @Rudy SO 将我的单行答案转换为 cmets,因此当它是单行时,我默认只做 cmets。随意投票;-)

标签: objective-c ios macos memory memory-management


【解决方案1】:

在 Obj-C 运行时中查找 class_getInstanceSize() 函数。

【讨论】:

    【解决方案2】:

    你有很多工作要做。使用class_getInstanceSize() 将为您提供一个对象的实例大小,但不是对象所指的对象的实例大小。每个对象引用只会算作一个 4 字节指针,而不是被引用对象的实际实例大小。

    你可以很聪明,使用class_copyIvarList(),遍历 ivars 并询问作为对象的任何 ivar 的实例大小,然后递归地对你的超类执行相同的操作,直到你找到根类。

    或者您可以使用内存分配模板启动 Instruments,并实时测量实际内存使用情况。

    【讨论】:

    • 似乎是一项艰巨的工作。而且我还需要检查对象是否已经计算过
    猜你喜欢
    • 2011-06-15
    • 2010-10-08
    • 2010-11-26
    • 2014-12-03
    • 2021-09-25
    • 2013-03-09
    • 2014-07-30
    • 2012-08-27
    相关资源
    最近更新 更多