Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 为什么可以';t仪器跟踪我的内存使用情况?_Iphone_Ios_Objective C_Memory_Instruments - Fatal编程技术网

Iphone 为什么可以';t仪器跟踪我的内存使用情况?

Iphone 为什么可以';t仪器跟踪我的内存使用情况?,iphone,ios,objective-c,memory,instruments,Iphone,Ios,Objective C,Memory,Instruments,我正在为应用商店开发一个应用程序,在内存管理方面有一些奇怪的问题 我正在使用ARC 在连接到仪器的未损坏的iPod touch 4G 6.0.1上测试我的应用程序时,一切似乎都正常-我的应用程序始终使用小于5mb的内存,并且没有泄漏。然而,在长时间使用后,尽管仍在仪器中被监控为

我正在为应用商店开发一个应用程序,在内存管理方面有一些奇怪的问题

我正在使用ARC

在连接到仪器的未损坏的iPod touch 4G 6.0.1上测试我的应用程序时,一切似乎都正常-我的应用程序始终使用小于5mb的内存,并且没有泄漏。然而,在长时间使用后,尽管仍在仪器中被监控为<5Mb,但我开始收到内存警告,最终被操作系统杀死。我在后台没有任何打开的应用程序,因此我假设我的应用程序正在泄漏内存,Instruments无法跟踪。这怎么可能

此外,我开始使用一个函数跟踪内存使用情况,具体如下:

 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)。我在仪器中同时进行测量,结果仍然显示~3-4Mb。这里发生了什么?

仪器可能在跟踪堆分配,而不是总的地址空间消耗。如果您的应用程序导致大量文件被内存映射,则可能导致堆分配量(malloc等)较低,但应用程序的系统内存消耗较高


如果不了解你的应用程序的更多信息,就不可能真正进行上述推测。

Instruments可能跟踪堆分配,而不是总地址空间消耗。如果您的应用程序导致大量文件被内存映射,则可能导致堆分配量(malloc等)较低,但应用程序的系统内存消耗较高


如果不了解你的应用程序的更多信息,就不可能真正进行上述推测。

分配工具只跟踪堆内存,这只是整个运行应用程序内存使用的一小部分


看看VM Tracker工具,这是整个虚拟内存使用统计数据,也许您可以找到问题所在

分配工具只跟踪堆内存,它只是整个运行应用程序内存使用的一小部分

看看VM Tracker工具,这是整个虚拟内存使用统计数据,也许您可以找到问题所在