Get the amount of free memory available in iPhone application

Today i was exploring memory leaks & debugging in Xcode and found a handy code! Get to now how much free memory available and how to free more memory.

#import <mach/mach.h>
#import <mach/mach_host.h>

+(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");
return 0;
}
/* Stats in bytes */
natural_t mem_free = vm_stat.free_count * pagesize;
return mem_free;
}

Call this static method inside your function to know how much memory is available. For example

>natural_t freemem = [YourClass get_free_memory]

Now you can free the memory using this code

/* Allocate the remaining amount of free memory, minus 2 megs * /
size_t size = freemem - 2048;
void *allocation = malloc(freemem - 2048);
bzero(allocation, size);
free(allocation);

Looked at this application, the developer use this technique to free memory in a funny way and make $’s as well

http://landonf.bikemonkey.org/static/private/FartMemory/FartMemory.mov

I hope this will help someone icon smile Get the amount of free memory available in iPhone application

 Get the amount of free memory available in iPhone application
My name is Adeem M Basraa. I am a software engineer from Lahore, PK. I’ve been involved in software development for nearly 4 years, with the last 1 year focused on application development for mobile devices (iPhone & Android).

2 Comments on "Get the amount of free memory available in iPhone application"

  1. Bob says:

    Hi Adeem,

    Thanks for this topic.
    Do you know how to get total size of disk and available space on it for iPhone ?

    Bob.

Trackbacks for this post

  1. Get the amount of free memory available « iPhone Diary

Got something to say? Go for it!