【问题标题】:iPhone: leaks from other Apps taking up RAM?iPhone:其他占用 RAM 的应用程序泄漏?
【发布时间】:2010-01-23 06:38:50
【问题描述】:

我读到一些人说,如果某人 iPhone 上的另一个(第 3 方)应用程序发生内存泄漏,这可能会减少您的应用程序原本可用的(神秘)RAM 量。

这让我很困惑——当用户关闭应用程序时,不是所有的应用程序内存都被释放了吗?在 iPhone 上一次只能打开一个应用程序?

【问题讨论】:

  • 可用 RAM 的数量未知。它可以很容易地获得,我的手机目前已配置为在状态栏中显示它。
  • 我还没有!您是指闪存 RAM 还是应用程序 eDRAM?

标签: iphone memory memory-leaks


【解决方案1】:

通常,您的应用程序分配的任何内存都将在退出时被释放。但是,Apple 的许多应用程序在“关闭”后仍会继续运行,因此 Mail 中的内存泄漏可能会影响可用内存。

此外,还有一些应用程序声称可以释放分配的内存。除了强制将一些脏页从缓冲区缓存中取出之外,它们实际上并没有做任何事情,但是它们似乎做了一些事情,所以人们相信他们一定在做一些有用的事情。

【讨论】:

  • 好的,但只是 Apple 应用程序——不是第 3 方?第三方应用程序可以让进程在后台永久运行、监控、等待吗?应用程序现在可以与其他应用程序通信的概念如何?
  • 不,通知服务在后台运行,但这只是一个处理每个应用程序通知的进程。应用程序实际上只能通过将 URL 从一个应用程序传递到另一个应用程序来相互通信。第一个应用在第二个应用启动之前退出。
【解决方案2】:

在越狱手机上 - 是的,第三方应用程序可以与您的应用程序同时运行。对于喜欢同时运行多个应用程序的人来说,内存不足很常见,因此需要任务管理器、终止任务等。

在未破解的手机上 - 不。你的应用程序是唯一运行的非苹果应用程序,没有其他应用程序可以同时运行。

那你能做什么?你所能做的就是尽量使用你可能已经在做的尽可能少的内存。实际上,您只能使用工厂未破解的手机进行测试,除非您要花费数小时来取悦所有人。如果您认为您可能使用过多,您可以使用工具工具(Xcode 中的“使用性能工具运行 >”)识别较大的分配,然后在此处发布该代码块以获得如何减少它的想法。

【讨论】:

  • 我实际上还没有开发,只是在研究和好奇。我当然不会担心被黑客入侵的手机。有没有什么地方可以让一个第 3 方应用程序在后台运行一个进程,该进程始终在等待收到的邮件或其他东西?
  • 一个 Apple 任务,是的 - 但您的应用程序不必处理内存可用性降低的问题。它是操作系统的一部分,整体内存可用性会考虑到这一点,等等。第三方任务,没有。
  • 操作系统会为它需要处理的内容保留内存,您不必担心它会降低应用的可用性。
  • Apple 后台进程可能会泄漏。这也很令人沮丧,因为只有 3rd 方应用程序会在内存不足时被杀死。
  • 推送通知不是第 3 方应用程序在后台连续运行一个进程,就像每 15 分钟检查一次 Twitter 帐户并通过通知有新的通知打断你在 iPhone 上所做的任何事情推特消息?
【解决方案3】:

您应该运行 Instruments,然后添加仪器“内存监视器”以查看手机上所有其他进程的内存使用情况。 (使用 Window -> Library 添加,然后将 Memory Monitor 仪器拖到仪器面板上。

我仍在试图确定的是,为什么 iOS 会从我的应用程序中释放内存,而不是所有其他当前未运行的内存猪应用程序。

【讨论】:

    猜你喜欢
    • 2010-11-08
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多