【发布时间】:2015-03-11 01:10:53
【问题描述】:
我正在尝试确定当前进程在 Mac OS X 上使用了多少内存。具体来说,top 如何计算每个进程的 MEM 列中显示的值?活动监视器在“内存”选项卡上的每个进程的“内存”列中显示相同的值。
网络上有几个页面(如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,而此代码报告 105 MB)。 top 和 Activity Monitor 如何找到进程的内存使用情况?
【问题讨论】:
-
您能否检查
top字段rprvt是否与此代码的结果匹配? -
@JohnZwinck RPRVT 字段小于 MEM 字段。目前的值为:MEM:63M,RPRVT:45M,VPRVT:170M,VSIZE:2679M。代码片段报告100M
-
这里有类似问题:活动监视器 190MB,XCode 调试工具:244MB,task_info:320MB。最高报告为 XCode 244MB
-
可执行文件/应用程序的大小如何?包括 - 不包括? (例如:居民大小)