【问题标题】:What does Instruments actually report?Instruments 实际报告了什么?
【发布时间】:2013-11-04 18:39:51
【问题描述】:

这是我在游戏中用于获取内存使用信息的一小段代码。

#include <mach/mach.h>

unsigned get_memory_bytes(void) {
    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info( mach_task_self(), TASK_BASIC_INFO, (task_info_t) &info, &size );
    return kerr == KERN_SUCCESS ? info.resident_size : 0;
}

unsigned get_memory_kb(void) {
    return get_memory_bytes() >> 10;
}

最近,我一直在使用 Instruments 来执行内存分析,以便发现我的游戏代码中的问题。但是,我注意到我的游戏内报告告诉我的内容与 Instruments 告诉我的内容之间存在差异。

更多信息,please go here

也就是说,我很好奇 Instruments 从哪里获取信息。它应该附加到进程中,但它仍然必须使用某些东西从某个地方获取信息,所以我想知道那是什么东西以及它是从哪里获取的。

【问题讨论】:

  • 我最终对 CCDirector 做了一个小手术,以便在显示 FPS 等时添加 Mb 行……使用与您的代码几乎相同的代码。我相信这个:)
  • 很高兴知道我不是唯一使用它的人 :) 谢谢!

标签: ios memory-management cocos2d-iphone instruments


【解决方案1】:

我期望 Instruments 做的是它 hooks into malloc(和相关的)函数来监控所有分配。

我不确定 Instruments 是这样做的,也不知道它是否在此之外做任何其他事情。但它似乎是 Instruments 之类的工具会使用的最合理、通用、不会遗漏的解决方案。

【讨论】:

    猜你喜欢
    • 2012-09-02
    • 1970-01-01
    • 2011-04-01
    • 2013-06-02
    • 2020-11-21
    • 2015-02-26
    • 2017-06-29
    • 2013-06-13
    • 2011-03-31
    相关资源
    最近更新 更多