我正在为 App Store 开发一个应用程序,并且在内存管理方面遇到了奇怪的问题。
我正在使用 ARC。
在连接到 Instruments 的未越狱 iPod touch 4G 6.0.1上测试我的应用程序时,一切似乎都很顺利——我的应用程序始终使用不到 5mb的内存并且没有泄漏。然而,经过长时间的使用,尽管仍然在仪器中被监控为 < 5Mb,但我开始收到内存警告并最终被操作系统杀死。我在后台没有任何打开的应用程序,所以我假设我的应用程序正在泄漏内存,仪器无法跟踪。怎么会这样?
此外,我开始使用一个函数来跟踪内存使用情况,特别是:
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 ) {
return info.resident_size/1024.0/1024.0;
} else {
return -1.0;
}
它似乎报告了我的应用程序行为(60-70Mb)可能预期的内存使用情况。我在 Instruments 中同时进行测量,它仍然显示 ~3-4Mb。这里发生了什么?