如何在Mac OS上获取进程的峰值内存?

时间:2020-03-19 06:16:48

标签: macos memory

在linux中,当进程正在运行时,我可以通过查看“ / proc / self / status”来检查其当前的内存使用情况以及历史上的峰值内存使用情况。 Mac中是否有类似的文件?

在Mac中,我发现“ vmmap pid”提供了有关内存使用情况的很多信息,但是似乎没有监视pid的偷看内存使用情况。请问有人可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

程序可以使用Mach API来获取自己的内存统计信息。例如:

#include <stdio.h>
#include <mach/mach.h>
#include <stdlib.h>

int main(void)
{
    kern_return_t ret;
    mach_task_basic_info_data_t info;
    mach_msg_type_number_t count = MACH_TASK_BASIC_INFO_COUNT;

    ret = task_info(mach_task_self(), MACH_TASK_BASIC_INFO, (task_info_t)&info, &count);
    if (ret != KERN_SUCCESS || count != MACH_TASK_BASIC_INFO_COUNT)
    {
        fprintf(stderr, "task_info failed: %d\n", ret);
        exit(EXIT_FAILURE);
    }

    printf("resident size max: %llu (0x%08llx) bytes\n",
           (unsigned long long)info.resident_size_max,
           (unsigned long long)info.resident_size_max);
    return 0;
}

或者,您可以使用“分配”模板在“仪器”下运行程序,以观察其内存使用情况。 (Xcode本身也具有内存量规,但是如果它显示出峰值使用率,我就不会立刻回忆起。)