And*_*ing 27

实际上,你知道有多少内存是免费的,而不是你的应用程序使用了多少,这可能更重要.这是一些代码:

#import <mach/mach.h>
#import <mach/mach_host.h>

+(natural_t) get_free_memory {
    mach_port_t host_port;
    mach_msg_type_number_t host_size;
    vm_size_t pagesize;
    host_port = mach_host_self();
    host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
    host_page_size(host_port, &pagesize);
    vm_statistics_data_t vm_stat;

    if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS) {
        NSLog(@"Failed to fetch vm statistics");
        return 0;
    }

    /* Stats in bytes */
    natural_t mem_free = vm_stat.free_count * pagesize;
    return mem_free;
}
Run Code Online (Sandbox Code Playgroud)

  • 我可以问为什么知道有多少内存是免费的,而不是当前应用程序使用了多少内存?免费的多少只影响在不久的将来应该分配多少滞后尖峰,而总使用量将告知**应用程序终止**是否迫在眉睫.我无法想象前者比后者更有用的一种情况.我指导读者[这里](http://stackoverflow.com/a/7990532/340947)找出当前应用程序的使用方法. (3认同)
  • 当有人要求A时,不要告诉他/她A不如B重要. (3认同)

mpl*_*ert 14

是.在Xcode中,打开项目并选择Run > Run with Performance Tool > Allocations.这将启动一个名为Instruments的应用程序,可用于分析您的应用程序.在这种特定情况下,它将记录所有对象分配,从而为您提供内存占用的良好概览.您可以将它与iOS模拟器和实际设备一起使用.您应该更喜欢在iOS设备上运行时分析应用程序以获得最佳效果.

仪器可以做很多事情来帮助您优化您的应用程序,因此您应该仔细查看" 仪器用户指南".

  • 制作该产品 - >分析(单击) - >分配 (5认同)

mat*_*odv 4

您可以使用仪器。它随 iOS SDK 一起提供。
使用设备比模拟器更准确......

启动它,选择监视类型(分配、泄漏、活动监视器),选择要监视的进程和目标,然后单击记录按钮。
单击此按钮,应用程序会自行打开。

完成后,单击停止按钮停止监控。

您可以在此处找到有关该计划的更多信息: 关于仪器