1

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

10秒后???

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

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

基础

高度

lbdispatch.dylib

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

但这是很多内存分配吗?太坏了???

4

2 回答 2

3

是也不是,这取决于你在做什么,如果你分配了很多字符串,假设你分配了 1000 个字符串,这些分配本身还不错,但这取决于你的应用程序的逻辑视图,如果你真的需要一次所有字符串,您需要在应用程序的所有步骤中分配并激活它们,然后您无事可做,您的应用程序只需要大量内存,

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

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

但是,如果您可以重组您的应用程序以使用延迟加载、缓存、分配池,那就更好了

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

于 2012-06-21T08:29:30.670 回答
1

另外,你有僵尸吗?僵尸默认不会真正删除任何分配,因此永远不会释放内存。始终在关闭 Zombies 的情况下测试内存泄漏。

于 2012-06-21T13:09:23.063 回答