确定iOS设备上可用的RAM数量

你可能已经看到了许多“系统信息”应用程序,其中显示的东西,如电池剩余时间,甚至像内存等系统信息。

以类似的方式,有没有办法从我的应用程序检索当前可用的RAM的数量,以便我可以做出更好的决定,何时最好转储或保留某些视图以避免内存警告?

#import <mach/mach.h> #import <mach/mach_host.h> void print_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"); } /* Stats in bytes */ 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; NSLog(@"used: %u free: %u total: %u", mem_used, mem_free, mem_total); } 

请注意,这个调用并没有考虑到gpu正在使用的内存。 如果您看到的尺寸小于预期的系统内存。 这是更可能分配的graphics内存。

您可以在iOS设备上查看可用的RAM内存

  #import mach\mach.h #import mach\mach_host.h static natural_t get_free_memory(void) { 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; }