【发布时间】:2016-02-07 22:27:29
【问题描述】:
我正在尝试在 iOS 设备上获取免费内存,但下面的代码在 iOS 9、iphone 5s 设备上为我提供了 34MB 内存,即使只有 1 个正在使用 98MB 内存的应用程序正在运行。下面的代码中是否有一些错误?
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");
}
natural_t mem_free = vm_stat.free_count * pagesize;
return mem_free;
}
【问题讨论】:
-
你的代码和stackoverflow.com/questions/5012886/…一模一样,所以不太可能有bug。
-
@matt 你能试试这个代码吗?这段代码告诉我,当后台没有应用程序并且当前应用程序中唯一的代码是获取可用内存的代码时,我在 iOS 9 上的 iPhone 5s 上有 134MB 内存。
-
@anuj 听起来您可能对虚拟内存系统中的“免费”意味着什么有误解。