仪器中的内存分配是否过多?

时间:2012-06-21 08:24:36

标签: objective-c ios memory memory-management instruments

我正在玩乐器。我刚刚记录/分析内存泄漏,我的内存泄漏很少,但即使我的应用程序刚打开,大量的分配也会继续进行。这是使用该应用程序不到10秒后的屏幕截图。

AFTER 10 SECONDS???

随着我继续使用该应用程序,它不断增加和增加。

最奇怪的部分是大多数分配来自我不知道的类:

粉底

高度

lbdispatch.dylib

但它可能来自SBJson以及我为JSon和XML导入和添加的其他类。

但这是多少内存分配?太糟糕了???

2 个答案:

答案 0 :(得分:3)

是和否,这取决于你在做什么,如果你分配了很多字符串,假设你分配了1000个字符串,这些分配的perse也不错,但这取决于你的应用程序的逻辑视图,如果你真的需要一次所有的字符串,你需要通过你的应用程序的所有步骤分配和活动,然后你没有任何事情可做,你的应用程序只需要很多内存,

但另一方面,您可能会找到其他一些逻辑结构应用程序的方法,例如,您只能在需要时分配1000个字符串中的每一个。

一个非常抽象的答案是,如果你的应用程序需要大量内存并且无法使用延迟加载或缓存等技术,那么你就没有任何其他解决方案

但是,如果您可以重构您的应用程序以使用延迟加载,缓存,分配池,它会更好

请注意:您可以通过在应用程序中正确实施内存警告回调来让iOS sdk帮助您,这样每当您收到警告时,您就会开始释放您当前不需要的任何资源

答案 1 :(得分:1)

另外,你有僵尸吗? Zombies默认不会实际删除任何分配,因此永远不会释放内存。始终关闭Zombies来测试内存泄漏。