macos - 如何在 Mac OS 上获得进程的峰值内存?

标签 macos memory

在 Linux 中,当进程正在运行时,我可以通过查看 /proc/self/status 来检查其当前内存使用情况和历史峰值内存使用情况。 mac中有没有类似的文件?

在 mac 中,我发现 vmmap pid 提供了很多关于内存使用情况的信息,但似乎没有监控 pid 的内存使用情况。请问有没有人可以帮我做命令?

最佳答案

程序可以使用 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;
}

或者,您可以使用分配模板在 Instruments 下运行您的程序,以观察其内存使用情况。 (Xcode 本身也有内存量表,但我不记得它是否显示峰值使用量。)

关于macos - 如何在 Mac OS 上获得进程的峰值内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60751839/

相关文章:

使用 Linphone 的 Android SIP 应用程序

无法读取 utmpx 文件

python - cmake 发现错误的 python 库

c - 为什么 char[] 在堆栈上,而 char * 在堆上?

c - 释放所有由 malloc(), realloc() 在 C 中分配的内存

Mac 上的 PHP Eclipse Luna 没有 eclipse.ini

macos - 按字母顺序对 NSPopUpMenu 项目进行排序

c++ - 是否有免费软件实用程序可以监视 C++ 应用程序的内存泄漏?

c++ - 如何更改 shared_ptr 中的指针而不失去删除内存的能力?

ios - ios UIWebView中的大量内存泄漏