iPhone应用程序使用的内存

iPhone应用程序使用的内存,iphone,ios,ios5,memory,Iphone,Ios,Ios5,Memory,可能重复: 我需要知道iPhone应用程序在前台或后台运行时使用了多少内存。 如果每5秒显示一次内存使用情况,效果会更好。 是否可以编写代码来显示正在使用的内存? 任何建议都将通知用户NSTimer,计划在5秒内运行。 要获取已用内存的值,这里有一些代码 #import <mach/mach.h> void report_memory(void) { struct task_basic_info info; mach_msg_type_number_t size

可能重复:

我需要知道iPhone应用程序在前台或后台运行时使用了多少内存。 如果每5秒显示一次内存使用情况,效果会更好。 是否可以编写代码来显示正在使用的内存?
任何建议都将通知用户NSTimer,计划在5秒内运行。 要获取已用内存的值,这里有一些代码

#import <mach/mach.h>

void report_memory(void) {
    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                               TASK_BASIC_INFO,
                               (task_info_t)&info,
                               &size);
    if( kerr == KERN_SUCCESS ) {
        NSLog(@"Memory in use (in bytes): %u", info.resident_size);
    } else {
        NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
    }
}
#导入
作废报告\内存(作废){
结构任务\基本\信息;
马赫数、型号、尺寸=尺寸(信息);
kern\u return\u t kerr=任务信息(mach\u task\u self(),
任务\基本\信息,
(任务信息)和信息,
&尺寸);
if(kerr==KERN_SUCCESS){
NSLog(@“正在使用的内存(字节):%u”,信息大小);
}否则{
NSLog(@“任务信息错误():%s”,马赫错误字符串(克尔));
}
}

首先在.h文件中包含方法报告内存,然后导入

#import <mach/mach.h>
然后加上这个

-(void) report_memory {
    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                                   TASK_BASIC_INFO,
                                   (task_info_t)&info,
                                   &size);
    if( kerr == KERN_SUCCESS ) {
        NSLog(@"Memory usage: %.4lf MB", info.resident_size/1024.0/1024.0);
    } else {
        NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
    }
}

方法到.m文件

为什么不使用工具来测试它,它功能更强大、更灵活,并且避免将测试代码放入您的实时项目中。在64位iOS7上,这会给出非常大的数字,或者0?
-(void) report_memory {
    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                                   TASK_BASIC_INFO,
                                   (task_info_t)&info,
                                   &size);
    if( kerr == KERN_SUCCESS ) {
        NSLog(@"Memory usage: %.4lf MB", info.resident_size/1024.0/1024.0);
    } else {
        NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
    }
}