从C ++获取进程的内存使用情况

时间:2015-01-13 06:22:34

标签: c++ macos memory

我正在尝试确定当前进程在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如何查找进程的内存使用情况?

1 个答案:

答案 0 :(得分:0)

基于我的OSX应用程序,所以也许我错了,听起来像。 Top / XCode工具报告由" new / malloc /?"分配的内存。调用,例如:代码本身执行的分配。相反,任务信息包括操作系统用于加载可执行文件的内存+您所做的所有分配。在我的情况下,我有一个75MB的增量,大约是我的调试版本(不包括资源)。

相关问题