我有一个基于导航的问题应用程序,我每次都从 Nib 创建并推送我的表格 View 。没有泄漏,在仪器中,实时字节大约为 2-3 MB。
我在真实设备(越狱的 IOS4 iPhone)中进行了测试,当我深入导航时(大约 200 个页面推送),我可以看到内存使用量高达 150 MB!当我导航回根目录时,它们都被释放了,但这不是一个奇怪的行为吗? (每个 Nib View 大约 800 KB,其中没有大数据或图像)
最奇怪的是,我向 didreceivememorywarning 和 didunloadview 方法发出了一些警报,但没有收到任何内存警报!
-为什么即使应用程序使用 150 MB 或更多内存,我也从未收到任何内存警告和 viewDidUnload ? -应用程序可以运行,但这种内存使用对 Apple 商店来说是一个问题吗?
最佳答案
一些时髦的事情正在发生。尝试以下代码来检查您的应用使用的内存量的操作系统版本
-(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 in use (in bytes): %u", info.resident_size);
} else {
NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
}
}
您需要#import“mach/mach.h”
这将告诉您操作系统已授予您的应用程序多少内存。因此,如果您看到的是一些奇怪的 Instruments 行为,这应该会有所启发。
关于iPhone应用程序使用150 MB内存,仍然没有内存不足警告!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6787528/