如何解决iOS应用程序中的内存泄漏?

问题描述 投票:0回答:3

我在运行应用程序时发现很少的内存泄漏。供您参考,我将分享Instrument调试日志和Xcode Debugg内存图工具的屏幕截图。我没有明白这里出了什么问题。请帮助我解决内存泄漏。

Memory debugger graph

enter image description here

[请帮助我修复图像中的内存显示。谢谢。

swift xcode memory-leaks xcode-instruments
3个回答
0
投票

您不需要使用乐器。那是老方法。使用Xcode本身。

请参见Visual Debugging with Xcode - 24:45

观看视频是必须的,但是视频的摘要是这样的:

存在两种类型的内存问题。您只需要在应用程序中重复2-3次流程即可确保内存图已捕获它

  • 泄漏。 Xcode将使用紫色图标对此进行注释。可能是:委托,闭包
  • 被遗弃的内存。 Xcode不会对此进行注释。但这仍然会增加您的内存占用量。可能的示例包括:永不失效的重复计时器,NotificationCenter,永无休止的DispatchWorkItem

对于泄漏,内存图是一个循环,即两种方式。

对于废弃内存,图形不是两种方式。 Apple只是一个对象,将其归类为“根路径”,它引用了您的对象并且永不放弃。有关更多信息,请参见here


-1
投票

移动设备上的内存是共享资源。管理不当的应用程序会耗尽内存,崩溃并遭受性能急剧下降的困扰。因此要解决此问题,请按照以下步骤操作打开Xcode并进行分析。发射仪器。使用该应用,尝试重现尽可能多的场景和行为。注意泄漏/内存峰值。寻找内存泄漏的根源。解决问题。


-1
投票

在内存调试器图中,您必须确定哪些类相互引用,例如:

Entry Controller Home Controller Feed Controller Entry Controller Home Controller

您能看到上面的代码如何在家庭控制器和入口控制器之间循环。

您必须确定哪个是weak参考,哪个是强参考,换句话说,哪个保留在内存中,哪个应该放开。

希望有帮助。如果需要进一步说明,请随时发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.