2010-01-28 23 views
0

iPhone上可能獲得特定程序的內存消耗嗎?例如,我想知道我的程序在沒有使用儀器工具的情況下使用了多少內存。iPhone上的特定程序的內存

在此先感謝。 Alex

回答

1

我強烈建議使用Memory Monitor工具來跟蹤特定應用程序的內存使用情況。

您可以通過功能得到全系統的內存使用情況統計如下所示:

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

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

此代碼是從蘭登富勒post on the topic複製。 Noel Llopis在調查應用程序內存使用情況時也有a nice writeup。不幸的是,從應用程序本身中知道應用程序的內存使用情況並不容易。

0

這很棘手。儀器真的是我認爲的方式。或越獄你的iPhone並安裝Cydia的top命令。

也有一些值,你可以得到sysctl但我認爲這些是全球內存使用情況,而不是每個應用程序。