1

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

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

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

根据这篇文章,这是一个常见问题。

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

4

1 回答 1

1

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

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

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

于 2011-10-25T14:34:17.437 回答