2013-10-25 46 views
3

这是我在游戏中用于获取内存使用信息的一小段代码。仪器实际报告什么?

#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; 
} 

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

欲了解更多,please go here

这就是说,我很好奇仪器从哪里抽取信息。它被认为是重视这个过程,但它仍然需要从某处使用某些东西来获取信息,所以我想知道那是什么东西以及它从哪里被抓取。

+1

我最终在CCDirector上做了一个小小的手术,在显示FPS等时添加一个Mb行......使用与您的代码大致相同。这我相信:) – YvesLeBorg

+0

很高兴知道我不是唯一使用它:)谢谢! –

回答

0

我期望的工具是它hooks into malloc(和相关)功能来监视所有分配。

我不确定这是仪器所做的事情,或者它是否做了任何超出此范围的事情。但它似乎是最合理的,适合所有目的的,不会错过类似于Instruments所使用的工具的解决方案。