2015-01-13 89 views
0

我試圖確定當前進程在Mac OS X上使用多少內存。具體來說,top如何計算每個進程的MEM列中顯示的值?活動監視器在「內存」選項卡上的每個進程的「內存」列中顯示相同的值。從C++獲取進程的內存使用情況

有網絡上的幾頁(如this answer)提示如下:

struct task_basic_info tinfo; 
mach_msg_type_number_t count = TASK_BASIC_INFO_COUNT; 
task_info(
    mach_task_self(), TASK_BASIC_INFO, 
    (task_info_t) &tinfo, &count); 
// memory usage is in tinfo.resident_size; 

但返回的值是關閉了近2倍(如上面顯示64 MB,而該代碼報告105MB )。 top和Activity Monitor如何查找進程的內存使用情況?

+0

你可以檢查'top'字段'rprvt'是否匹配這段代碼的結果嗎? –

+0

@JohnZwinck RPRVT字段小於MEM字段。目前的值是:MEM:63M,RPRVT:45M,VPRVT:170M,VSIZE:2679M。代碼片段報告100M – roeland

+0

類似的問題在這裏:活動監視器190MB,XCode調試工具:244MB,task_info:320MB。頂級報告爲XCode 244MB –

回答

0

基於我的OSX應用程序,所以也許我錯了,聽起來像。 Top/XCode工具報告由「new/malloc /?」分配的內存調用,例如:代碼本身執行的分配。相反,任務信息包括操作系統用來加載可執行文件+所有分配的內存。在我的情況下,我的增量爲75MB,大約是我的調試版本(不包括資源)。

相關問題