3

在模拟器中运行我的应用程序并使用 Instruments 分析其内存分配时,该应用程序运行速度非常慢,它的运行速度不到正常速度的 1/30。

该应用程序使用大约 50 MB RAM 并有大约 900,000 个生命对象(根据 Instruments)。

这可能是性能缓慢的原因吗?

在设备上的应用程序或模拟器中运行而不使用 Instruments 时,它表现良好(除了我试图调试的内存问题)。

  • 您对如何解决此问题有任何想法吗?
  • 您是否遇到过使用内存分配工具性能下降的问题?
  • 你会考虑拥有超过 900,000 个生命物体“有关”吗?

在此处输入图像描述

4

2 回答 2

2

考虑您的 Analyzer 性能问题

在您的特定情况下,不需要长时间监控应用程序,因为您很快就会达到高内存消耗状态。此时您可以简单地停止录制。这样您就不会在浏览不同的视图和统计信息以查找内存问题的原因时遇到问题。

分析内存问题

减速是正常的。1/30 听起来相当惊人

您可能应该在使用应用程序时跟踪生命对象的数量和内存使用情况的变化。

很难确定某个特定时间点的一定数量的生命物体是否至关重要(尽管 900,000 似乎非常高)。

一般来说:如果生命对象和内存使用量持续增长并且不缩小,那是一个不好的迹象。

如果你看一下Statistics -> Object Summary(Screenshot),Live Bytes应该比对象的数量要小很多Overall Bytes,并且对象的数量#Living应该比对象的数量要小很多#Transitory

在此处输入图像描述

您可以看到的第二件事是Call Tree视图。它使您可以很好地概述应用程序的哪些部分负责保留大量内存:

在此处输入图像描述

可能的解决方案

一旦您检测到负责保留大量内存的代码部分,您就可以寻找保留周期,或者您可以尝试在该位置使用更多的自动释放池。

于 2013-08-13T15:18:16.403 回答
0

检查您是否有足够的可用磁盘空间。我还剩下 8gb,看起来太少了。仪器非常缓慢。刚开始用了一分钟,根本没有绕开。

我清理了更多的磁盘空间,然后它突然恢复到以前的速度。

于 2016-08-25T08:54:36.123 回答