【问题标题】:Is it possible to force termination of backgrounding apps on iOS?是否可以强制终止 iOS 上的后台应用程序?
【发布时间】:2011-10-25 14:24:17
【问题描述】:

我编写了一个处理视频的应用程序。众所周知,视频处理在处理高清分辨率时会占用大量内存。我的应用程序似乎总是崩溃。但实际上我 100% 确定,我的代码中没有内存泄漏。仪器显示没有泄漏。

一开始我正在启动一个 OpenGLES 视图和视频引擎。在很短的时间内内存消耗很高,但在初始化完成后下降到正常水平。在此期间,我总是收到内存警告。通常这没有问题。但是,如果我有很多处于暂停模式的应用程序正在运行,则该应用程序似乎正在崩溃。观察崩溃日志并使用调试器显示,我只是内存不足。

我的客户正在用“应用程序崩溃”邮件淹没我的支持邮件。但我知道,他们有太多的应用程序在后台运行,所以没有内存可用。我认为在运行应用程序之前告诉客户他必须关闭后台任务是一种糟糕的编程风格。

根据this post,这是一个常见问题。

我的问题是:是否可以告诉操作系统需要大量内存以便操作系统终止一些暂停的应用程序?这种记忆的东西让我发疯,因为它不是我可以修复的错误。

【问题讨论】:

    标签: memory-leaks ios4 ios5 didreceivememorywarning memory-warning


    【解决方案1】:

    没有。如果没有 API 调用,就不可能影响沙箱之外的任何内容。不存在影响公共 API 中的其他进程。

    您是否尝试过尽量减少内存使用量?根据我的经验,一旦出现内存警告,应用程序在后台运行时更有可能出现问题,即使内存使用量下降。

    如果您正在使用 OpenGLES 和纹理,如果您还没有 compress 您的纹理。您的内存分配高峰的具体原因是什么?

    【讨论】:

    • 我正在使用 coreImage 对视频帧应用一些过滤器。 CoreImage 将图像渲染到 GLES CoreImage 上下文。我只是在创建一个 GLKit viewController。没有魔法。 OpenGL 和 AVFoundation 正在初始化一些东西,这会产生尖峰。我想知道内存警告,因为它不是那么多内存(大约 2MB),而是内存上升得非常快。我尝试了一种解决方法。在 AVFoundation 方面,我等待使用 NSLock 创建 OpenGL,内存警告消失了。我假设每次内存使用量是造成这种讨厌的内存警告的原因?
    • 使用谷歌我找到了这个来源:codethink.no-ip.org/wordpress/archives/455 这个链接显示了如何绕过内存警告子系统。而且 - 惊喜 - 不再有应用程序终止。只有“硬”内存警告会导致终止。这并不优雅,但很有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2013-12-08
    相关资源
    最近更新 更多