【问题标题】:How to get current free RAM on iPhone/iPad [duplicate]如何在 iPhone/iPad 上获取当前可用 RAM [重复]
【发布时间】:2014-12-14 19:54:57
【问题描述】:

我想开发显示 iPhone/iPad 可用 RAM 的应用程序,但我没有找到有关如何执行此操作的信息。 我有目标c方面的知识

【问题讨论】:

  • 这是一个与本网站无关的问题——即使你提到你了解目标 C——不清楚你是否只是像用户一样清除 ram 或使用目标 c。跨度>
  • 如果我在任何搜索引擎上搜索“ios 找到空闲内存”或堆栈溢出本身,我确实找到了一个链接;)所以我投票关闭它作为一个骗子

标签: objective-c


【解决方案1】:
 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);
}

【讨论】:

  • 该代码似乎在 16Gb MacBook with Big Sur 1 上提供了不正确的结果。mem_free 应包含 vm_stat.inactive_count。 2. 必须使用__uint64_t 而不是natural_t 以避免溢出。 __uint64_t free_megabytes = (((__uint64_t)(vm_stat.free_count + vm_stat.inactive_count)) * pagesize) / 1048576;
猜你喜欢
  • 2014-12-05
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 2012-01-01
  • 2011-11-21
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多