适用于iPhone OS应用的可用内存

hpi*_*que 23 memory iphone memory-management

是否有函数或常量定义iPhone OS中应用程序的可用内存量?

我正在寻找一种独立于设备的方式(iPod touch,iPhone,iPad)来了解应用程序剩余的内存量.

Ben*_*ieb 48

此函数将以字节为单位返回可用内存:

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

natural_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);

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

    natural_t   mem_used = (vm_stat.active_count + vm_stat.inactive_count + vm_stat.wire_count) * pagesize;
    natural_t   mem_free = vm_stat.free_count * pagesize;
    natural_t   mem_total = mem_used + mem_free;

    return mem_free;
}
Run Code Online (Sandbox Code Playgroud)

  • 警告:根据经验,我认为host_statistics()报告的数字是无用的 - 至少是空闲/总内存.如果你做一些谷歌搜索,你会发现更多的人分享这个意见. (4认同)