Apple Instruments在分析内存分配时会降低应用程序的速度

时间:2013-08-13 15:05:37

标签: ios objective-c memory-leaks instruments

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

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

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

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

  • 您对如何解决此问题有任何想法吗?
  • 使用内存分配遇到性能下降了吗? 仪器?
  • 你会考虑超过900,000的生命 对象“关注”?

enter image description here

2 个答案:

答案 0 :(得分:2)

考虑您的Analyzer性能问题

在您的特定情况下,不需要长时间监视应用程序,因为您很快就会达到高内存消耗状态。你可以在这一点上停止录音。然后,您将无法浏览不同的视图和统计信息以查找内存问题的原因。

分析内存问题

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

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

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

一般情况下:如果生命对象和内存使用量持续增长而不缩小,那就不好了。

如果你看一下Statistics -> Object Summary(屏幕截图),Live Bytes应该比Overall Bytes小很多,#Living对象的数量应该远小于#Transitory Call Tree个对象的数量。

enter image description here

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

enter image description here

可能的解决方案

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

答案 1 :(得分:0)

检查您是否有足够的可用磁盘空间。我剩下8gb,似乎太少了。仪器极其缓慢。用了一分钟才刚开始,根本没有完全解决。

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