我在玩乐器。而且我刚刚记录/分析了内存泄漏,我几乎没有内存泄漏,但是即使我的应用程序刚刚打开,大量的分配也会继续进行。这是使用该应用程序不到 10 秒后的屏幕截图。
随着我继续使用该应用程序,它只会不断增加和增加。
最奇怪的部分是大多数分配来自我不知道的类,例如:
基础
高度
lbdispatch.dylib
但它可能来自 SBJson 和我为 JSon 和 XML 导入和添加的其他类。
但这是很多内存分配吗?太坏了???
我在玩乐器。而且我刚刚记录/分析了内存泄漏,我几乎没有内存泄漏,但是即使我的应用程序刚刚打开,大量的分配也会继续进行。这是使用该应用程序不到 10 秒后的屏幕截图。
随着我继续使用该应用程序,它只会不断增加和增加。
最奇怪的部分是大多数分配来自我不知道的类,例如:
基础
高度
lbdispatch.dylib
但它可能来自 SBJson 和我为 JSon 和 XML 导入和添加的其他类。
但这是很多内存分配吗?太坏了???
是也不是,这取决于你在做什么,如果你分配了很多字符串,假设你分配了 1000 个字符串,这些分配本身还不错,但这取决于你的应用程序的逻辑视图,如果你真的需要一次所有字符串,您需要在应用程序的所有步骤中分配并激活它们,然后您无事可做,您的应用程序只需要大量内存,
但是另一方面,您可能会找到一些其他方法来逻辑地构建应用程序,例如,您只能在需要时分配 1000 个字符串中的每一个。
一个非常抽象的答案是,如果您的应用程序需要大量内存并且无法使用某些技术(例如延迟加载或缓存),那么您没有任何其他解决方案
但是,如果您可以重组您的应用程序以使用延迟加载、缓存、分配池,那就更好了
请注意:您可以让 iOS sdk 帮助您,通过在您的应用程序中正确实现内存警告回调,这样每当您收到警告时,您就开始释放您当前不需要的任何资源
另外,你有僵尸吗?僵尸默认不会真正删除任何分配,因此永远不会释放内存。始终在关闭 Zombies 的情况下测试内存泄漏。