iPhone内存泄漏

时间:2009-08-26 14:33:44

标签: iphone objective-c memory-management memory-leaks

如果应用程序产生大量内存泄漏,它们“只是”应用内问题还是在应用程序终止后它们也在RAM中?那么iPhone OS是否会释放为沙盒应用程序分配的内存?

谢谢

3 个答案:

答案 0 :(得分:16)

内存泄漏是操作系统分配的内存块,供程序在运行时使用,但在程序完成后不能正确返回。所以这段记忆“迷失”了。您的程序没有使用它,但系统还不知道它可以免费用于其他用途。

当您的应用程序完成运行时,操作系统分配给它的所有内存都将被返回以供重用。哪个回答你的问题。

然而,内存泄漏是一个重大错误。在低内存设备上,比如iPhone,你消耗的内存越少越好,你不希望在运行时泄漏内存。如果设备内存不足,您的应用程序可能会意外终止或崩溃。

答案 1 :(得分:1)

当您在运行应用程序时分配任何对象并错过释放该对象时会发生内存泄漏,因此请在xcode中进行分析以帮助检查内存泄漏,并在xcode中运行配置文件模式将有助于检查应用程序中可能发生的泄漏。

并使用NSAutoReleasePool释放自动释放对象,当您只分配没有分配的对象时将创建该对象

希望它有所帮助。

答案 2 :(得分:1)

内存泄漏是一个应用内问题,但可能会对总可用RAM产生副作用。

它们是在实际不再使用时标记的内存块。所以他们迷失了应用程序。如果你有泄漏,这将增加记忆消耗。系统会记录不良的内存使用情况,并且应用程序可能会被监管机构jetsam抛弃(杀死)。

因此,请将内存泄漏降至最低; - )

它对整体操作系统有影响,但后果可忽略不计。因为当你点击孔按钮时你的应用程序没有被杀死,而是“背景化”,你的应用程序使用的所有内存仍然是实时的,对系统来说是不可用的。 Jetsam将首先告诉你内存很低并要求你摆脱你不需要的东西。当然,你不能解决你的泄密问题。

如果您仍然为系统使用太多内存,并且需要为另一个进程分配更多内存,那么您的应用程序将被终止。它所使用的所有内存都将被释放,包括泄漏。

泄漏很糟糕,在构建和分析中使用静态CLang分析器。