如何在iOS应用中测量SDK的内存占用量

时间:2015-07-07 09:20:27

标签: ios performance memory sdk memory-footprint

我尝试使用各种方法测量内存占用量 - 每种方法都返回不同的值。

第一种方法是在运行应用程序时查看Xcode中的小规格。 它显示20.9 MB的使用情况: enter image description here

第二种方式是使用此代码(显示38-39MB用法):

vm_size_t usedMemory(void) {
    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&info, &size);
    return (kerr == KERN_SUCCESS) ? info.resident_size : 0; // size in bytes
}

vm_size_t freeMemory(void) {
    mach_port_t host_port = mach_host_self();
    mach_msg_type_number_t host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
    vm_size_t pagesize;
    vm_statistics_data_t vm_stat;

    host_page_size(host_port, &pagesize);
    (void) host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size);
    return vm_stat.free_count * pagesize;
}

void logMemUsage(void) {
    // compute memory usage and log if different by >= 100k
    static long prevMemUsage = 0;
    long curMemUsage = usedMemory();
    long memUsageDiff = curMemUsage - prevMemUsage;

//    if (memUsageDiff > 100000 || memUsageDiff < -100000) {
        prevMemUsage = curMemUsage;
        NSLog(@"Memory used %7.1f (%+5.0f), free %7.1f kb", curMemUsage/1000.0f, memUsageDiff/1000.0f, freeMemory()/1000.0f);
//    }
}

第三种方式是使用显示大约19-20 MB使用率的仪器

enter image description here

最重要的是,我需要了解如何衡量SDK的内存占用量。 (在添加SDK之前和添加SDK之后 - 或SDK的“Blackbox”测量)

结果如何以及为何如此不同?

0 个答案:

没有答案