【问题标题】:Is too much memory allocation in Instruments bad?Instruments 中的内存分配过多是否不好?
【发布时间】:2012-06-23 10:56:57
【问题描述】:

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

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

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

基础

海拔

lbdispatch.dylib

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

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

【问题讨论】:

  • 我不知道仅从屏幕截图中使用了多少内存。但是,如果占用的内存正在用于当前屏幕,那么它应该不是问题。您可以查看对象列表并找到不应该删除的任何对象。
  • 只是一个更新......它在 5 分钟内大约 150 mb

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 2010-11-06
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2013-12-26
      • 2019-11-12
      • 2017-07-06
      相关资源
      最近更新 更多