iPhone开发 - 为什么使用8MB?

时间:2009-10-04 22:47:48

标签: memory-management iphone

即使我只使用基于Window的应用程序模板,它几乎没有任何东西,仪器(活动监视器)说我的应用程序的过程是使用8.14MB的真实内存!即使采用这种方法:

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

它还是~8.14 MB!所以看来仪器是正确的,但为什么UIWindow会占用那么多内存?

1 个答案:

答案 0 :(得分:2)

我的猜测是,占用所有空间的Objective-C运行时库,而不是你的UIWindow本身。但是,所有应用程序都使用这些库的副本,iPhone OS 可能足够聪明,可以在所有正在运行的应用程序中共享该内存(当然,只允许系统应用程序运行背景)。