2013-10-25 74 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所使用的工具的解決方案。