Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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
Ios 分配工具的不同行为(有和没有僵尸模式)_Ios_Monitoring_Instruments_Xcode Instruments_Allocation - Fatal编程技术网

Ios 分配工具的不同行为(有和没有僵尸模式)

Ios 分配工具的不同行为(有和没有僵尸模式),ios,monitoring,instruments,xcode-instruments,allocation,Ios,Monitoring,Instruments,Xcode Instruments,Allocation,我真的很难在iOS中进行内存管理,或者更精确地监控复杂的内存使用情况 因此,实际上我想知道曾经在僵尸模式下提供的分配工具(当我寻找僵尸时)和一般的“正常”分配工具(可从内存->分配中选择) 如果我在搜索僵尸,分配工具会显示当前分配的完全不同的存储数量(活动字节)。每次点击我的UI,活动字节都会增加很多 但是在正常的分配窗口(内存->分配)中,一切似乎都(几乎绝对)正常。因此,分配了1,13 MB的活动字节,但这是分配的最大字节数,与上面的描述不同,在上面的描述中,我可以通过单击我的UI达到4-5

我真的很难在iOS中进行内存管理,或者更精确地监控复杂的内存使用情况

因此,实际上我想知道曾经在僵尸模式下提供的分配工具(当我寻找僵尸时)和一般的“正常”分配工具(可从内存->分配中选择)

如果我在搜索僵尸,分配工具会显示当前分配的完全不同的存储数量(活动字节)。每次点击我的UI,活动字节都会增加很多

但是在正常的分配窗口(内存->分配)中,一切似乎都(几乎绝对)正常。因此,分配了1,13 MB的活动字节,但这是分配的最大字节数,与上面的描述不同,在上面的描述中,我可以通过单击我的UI达到4-5 MB。所以这对我来说真的很奇怪

在僵尸->分配中是否还有其他在正常分配窗口中不被考虑的东西


注意:我的程序中没有僵尸和泄漏。

据我所知,僵尸功能与仪器中的泄漏和对象分配是相互排斥的

事实上,当您启用zombies(Instruments或NSZombies指令)时,发生的情况是对象的“正常”保留周期被欺骗,以便您可以检测到使用已解除分配的对象的尝试。从某种意义上说,我不知道它的详细信息,但这就像retain count增加1一样,当retain count变为1时,您会得到关于尝试使用已解除分配的实例的错误。事实上,如果retain计数可以变为零,那么对象将被释放,并且在大多数情况下无法检测重用尝试,因为它可能在释放后很长一段时间发生,并且该内存块可能已被重新分配给其他对象。因此,人工增加保留计数将有助于允许对象在其“将是”解除分配后继续生存;当retain count变为1时,将在对象中设置一个标志,以便运行时知道它正在尝试向“将被”解除分配的对象发送消息,并且您将收到完整的错误消息


这只是我的心理模型,但它允许我解释为什么启用僵尸时内存分配要高得多(也就是说,因为对象不会像正常情况下那样被释放)。

啊,好的,谢谢你分享关于这一点的想法。因此,据我所知,我应该始终查看“正常”分配窗口。所以,这让我很高兴。我想到了编程过程中出现的大内存错误;-)。