Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determining the available amount of RAM on an iOS device

You've likely seen the many "System Info" apps out there which display things like remaining battery life, and even system info like memory, etc.

In a similar manner, is there any way to retrieve the current amount of available RAM from my app so that I can make better decisions on when it's best to dump or keep certain views to avoid memory warnings?

like image 348
m0rtimer Avatar asked Feb 16 '11 05:02

m0rtimer


People also ask

How do I check my RAM on iOS?

From the top-left menu, open This Device → System for details about your device's RAM.

How do I find out how much RAM my iPad has?

Go to Settings > General > About.


1 Answers

#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); } 

Please note that this call does not account for memory that is being used by the gpu. If you are seeing a size that is smaller than expected system ram. It is more than likely allocated graphics memory.

like image 179
Nico Avatar answered Oct 21 '22 20:10

Nico