我真的很纠结于iOS中的内存管理,或者更准确地说,是监控复杂的内存使用情况。
所以实际上我想知道的是在僵尸模式中提供的分配工具(当我寻找僵尸时)和一般的“普通”分配工具(可从内存->分配中选择)。
如果我正在搜索僵尸,分配工具会向我显示当前分配的完全不同数量的存储(实时字节)。随着我的UI的每一次点击,活动字节数都会增加很多。
但在正常的分配窗口(内存->分配)中,似乎(几乎绝对)一切正常。因此,分配了1,13 MB的活动字节,但这是分配的最大字节数,与上面的描述形成对比,在上面的描述中,我可以通过在UI上单击几下就可以达到4-5 MB。所以这对我来说真的很奇怪。
在僵尸->分配中有没有更多的东西在正常分配-窗口中没有被考虑?
注意:我的程序中没有僵尸和漏洞。
发布于 2011-07-02 23:15:01
据我所知,僵尸功能将被视为与Instruments中的泄漏和对象分配互斥。
实际上,当您启用僵尸(工具或NSZombies指令)时,所发生的是对象的“正常”保留周期被欺骗,这样您就可以检测到试图使用已经释放的对象的行为。在某种意义上,我不知道有关它的细节,但这就像如果保留计数递增1,当保留计数变为1时,您会得到有关尝试使用已经释放的实例的错误。实际上,如果保留计数可以变为0,则对象将被释放,并且在大多数情况下不可能检测到重用的尝试,因为它可能在释放后很长一段时间内发生,并且该内存块可能已经重新分配给其他对象。因此,保留计数的人工递增将用于允许对象在其“将要”释放的情况下幸存下来;当保留计数变为1时,在对象中设置一个标志,以便运行时知道它正在尝试向“将要”释放的对象发送消息,并且您将获得完整的错误消息。
这只是我的心理模型,但它允许我解释为什么在启用僵尸时内存分配会更高(即,因为对象不会像正常情况下那样被释放)。
https://stackoverflow.com/questions/6557593
复制相似问题