iOS8,Xcode6如何以编程方式获取内存使用情况,如Xcode所示

时间:2015-03-03 09:15:33

标签: xcode ios8 xcode6 64-bit

我使用以下内容来获取内存:

 struct task_basic_info info;
    mach_msg_type_number_t sizeNew = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                                   TASK_BASIC_INFO,
                                   (task_info_t)&info,
                                   &sizeNew);
    if( kerr == KERN_SUCCESS ) {
        printf("Memory in use (in bytes): %u", info.resident_size);
    } else {
        printf("Error with task_info(): %s", mach_error_string(kerr));

    }

但是由此返回的内存远高于XCode6所显示的内存,其他任何人都面临同样的问题?

1 个答案:

答案 0 :(得分:1)

驻留设置大小(RSIZE)与使用的内存量相同'。它也包括代码。

您可能正在寻找RPRVT计划中top的最高等效内容。

获取该信息需要遍历该进程的VM信息。使用code for libtop.c, function libtop_update_vm_regions作为模板,您需要遍历整个内存映射,将所有私有页面相加。这里有一个更简单的walking the address space示例,可用作计算此大小的基础。您正在查找VPRVT值, RPRVT值。

我目前没有马克思可以用任何程度的信心写出一个可行的例子。