2015-01-13 53 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,大约是我的调试版本(不包括资源)。

相关问题