-3

I want to develop app that show the free RAM of iPhone/iPad but I'm not found information about how to do it. I have knowledge in objective c

  • This is a irrelevant question to this site - even though you mentioned that you have knowledge of objective C - its not clear if you are just having issues clearing ram like a user or using objective c. – jagmitg Oct 19 '14 at 21:05
  • if I search for 'ios find free memory' on ANY search engine OR stack overflow itself, I do find a link ;) so im voting to close this as a dupe – Daij-Djan Oct 19 '14 at 21:07

1 Answers1

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);
}
Danial Hussain
  • 2,488
  • 18
  • 38
  • The code seems to provide incorrect results on 16Gb MacBook with Big Sur 1. mem_free should include `vm_stat.inactive_count`. 2. It's necessary to use `__uint64_t` instead of `natural_t` to avoid overflow. `__uint64_t free_megabytes = (((__uint64_t)(vm_stat.free_count + vm_stat.inactive_count)) * pagesize) / 1048576;` – Ivan Nikitin Dec 06 '21 at 18:13