iPhone中的总内存

我想知道我的iPhone中可用的 RAM。 为此,我使用了下面的代码。

注意:请不要将问题解释为检索RAM统计信息,如有线,无效,有效和免费。

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; } /* Stats in bytes */ self.wired = vm_stat.wire_count * pagesize / (1024 * 1024); self.active = vm_stat.active_count * pagesize / (1024 * 1024); self.inactive = vm_stat.inactive_count * pagesize / (1024 * 1024); self.free = vm_stat.free_count * pagesize / (1024 * 1024); self.used = self.active + self.inactive + self.wired; self.total = self.used + self.free; 

结果如下:

  • 模拟器 :总内存= 2045(我的电脑包含2GB内存)。 似乎是正确的。
  • 设备(iPhone 4) :总内存= 390( 应该是512 )。 不正确。
  • 设备(iPhone 3GS) :总内存= 84( 应该是256 )。 不正确。

请让我知道这是否是计算iDevice的内存的正确方法?

您无法读取设备的总RAM。 你只能读取你使用的可用RAM的估计值。 您的设备将始终使用一些内存(对于系统,后台应用程序,另一个进程),所以你永远不会看到你的“应该是512”完全。 为什么模拟器具有很高的价值? 男人,这是模拟器…如果你想知道内存,阅读你的设备的技术规格。 但是用你发布的方法,(如我所说),你会得到免费/使用的内存。 干杯。

有一个Git项目 ,显示您的iPhone上可用的最大RAM。 它也分配内存,直到它崩溃。 它保存了内存警告的值以及应用程序崩溃的时间。 在下一次开始时,您将显示在一个栏上的值。

资源

在这里输入图像说明