【问题标题】:Odd iOS memory management experience奇怪的 iOS 内存管理经验
【发布时间】:2012-08-01 15:39:51
【问题描述】:

我们在第一代 iPad 上使用配置文件工具在 Xcode 中测试我们的应用程序,该工具在 iPad 上使用大量内存,发现我们的应用程序的内存释放速度很慢(释放时间超过 1 分钟20 MB)。但是,在我们的代码中,我们正确地释放了内存。然后,我们监控了一些专业的 3rd 方应用程序(Chrome 和 Flipboard),并注意到这些应用程序也具有相同的释放率。

iOS 或 iPad 1 的内存释放速度是否缓慢,或者分析器可能会干扰 iOS 的内存释放?

我们使用的是最新的 iOS 版本。是的,在实际使用中,我们的应用程序的性能会受到缓慢的内存释放的影响

我们通过加载应用程序并等待内存稳定,然后加载媒体或视图并等待其稳定来测量释放率,然后我们返回原始视图并查看释放内存所需的负载以前的观点/媒体。其速度为(每 1 分钟不到 20 MB)。应用程序永远不会回到它原来的内存使用量,即打开应用程序并等待它稳定后的使用量,在启动视图上。

【问题讨论】:

  • “缓慢释放”是什么意思?应用性能是否受到影响?你在那个 iPad 上运行的是什么版本的 iOS?
  • 你如何衡量释放率?

标签: objective-c ios ipad memory hardware


【解决方案1】:

我们通过加载应用程序并等待内存稳定,然后加载媒体或视图并等待其稳定来测量释放率,然后我们返回原始视图并查看释放内存所需的负载以前的观点/媒体。

这不是一个有用的基准。好的,所以你分配了一些内存。然后你告诉操作系统你不再需要它了。到目前为止还好。除非它需要其他地方的内存,否则它通常不会费心去做很多事情。保留缓存更有意义,这样如果您再次需要它,它可以更快地使用。你没有测量任何有用的东西——你测量的是系统需要多长时间才能在其他地方使用内存,而不是需要多长时间来释放它。常识应该告诉你,一分钟释放 20MB 是不正确的。

我建议您提出一个基准来衡量您实际感兴趣的内容。缓慢的释放会如何影响您的应用程序?您确定您不会无意中将其用作您真正感兴趣的因素的不良替代品吗?

【讨论】:

  • 同意。我假设 MrHappyOne 正在使用 Activity Monitor 工具来衡量使用情况。这里列出的内存并不是特别有意义。更有用和更有意义的工具是分配。如果这需要很长时间才能解决,那么您的代码(或 WebKit 等高级库)中可能存在实际问题。您对操作系统级内存管理的讨论(即,除非需要,否则操作系统不会快速回收内存)。
  • 我们确实做了一些其他的记忆测试,但是我不想在我认为已经死了的问题上添加太多信息。我们的应用程序经常由于内存问题而崩溃,并且 iOS 在需要防止崩溃时无法释放足够的内存。我们的一些测试有很高的内存压力,iOS 未能解除分配。我将在 iPad 2 上测试我们的应用程序和其他应用程序,看看是否得到相同的结果。还要记住 iOS 分析器会占用大量内存。
  • 难道不是你使用了太多内存吗? Apple 告诉您在内存使用方面要非常保守,iOS 不保证您的应用程序有任何特定数量的内存。任何给定的应用程序都无权使用所有可用内存。如果您确定 iOS 没有按应分配内存,我建议您使用技术支持事件与 Apple 讨论此事。
  • 我们对内存持保守态度,并取消分配用户未看到和应用未使用的任何内容。我在 iPad 2 上对应用程序进行压力测试,没有分析器,它似乎只运行我们的应用程序就可以处理。我将尝试使用紧张的使用和更多的应用程序运行来测试应用程序,看看它是如何处理内存的。使用分析器时,它会因大量使用而崩溃。
  • 密集使用后会在iPad 2上崩溃,其他应用程序在后台运行。在 iPad 2 上,它的内存一直非常低(可用 5MB),但大多数情况下都能继续运行。我们在 iPad 1 上再次对其进行了测试,而分析器没有占用资源,而且它似乎只是在大量使用后才会崩溃。
【解决方案2】:

如果您确实在需要时释放内存(即您努力减少分配内存的时间),那么您不必担心“缓慢释放”(无论这个无意义的词是什么意思)。

不要高估分析者的能力。

【讨论】:

  • @MrHappyOne:这不是对内存管理工作原理的准确理解。硬件在此级别不参与分配。您可能会看到来自自动释放池的工件,或来自经历其自身生命周期的框架的分配。
  • @quixoto 我们正在正确解除分配,我认为 Flipboard 和 Chrome 也是如此。释放过程非常缓慢。
  • @quixoto 硬件确实在内存管理中发挥作用,尤其是在使用 DDR1 内存时。然而,iOS 似乎是问题,因为它管理内存分配和释放,但是正如我在正确释放之前所说的那样,我认为 Chrome 和 Flipboard 也是。
  • @MrHappyOne,维基百科链接是居高临下和侮辱性的。请不要那样做。
猜你喜欢
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多