为什么我的应用程序获得didReceiveMemoryWarning并被杀死,虽然内存是常量并且有足够的可用内存?

Kru*_*lur 5 cocoa-touch objective-c xamarin.ios ios4

我的应用程序有奇怪的效果.我实现了自己的PDF查看器.它一次显示一页.使用Instruments Activity Monitor我发现我的实际内存总是在50MB左右.在几次切换页面后,我收到了一个内存警告级别0.我尽力做出反应并牺牲低分辨率的背景图像,我首先渲染一些东西,直到C​​ATiledLayer赶上.没有帮助.几页之后,我得到了内存警告级别1和级别2,在几页之后,我的应用程序因"9"而被杀死.内存永远不会超过50MB!

为什么我首先得到这些警告?有足够的内存可用.

这是在运行iOS 4.3的iPad上发生的.

Ste*_*ton 2

我不认为这里发生了什么神秘的事情——我确信这不是你想听到的。没有可用的“安全”内存量的绝对数字。规则是:当操作系统告诉您使用过多时,请减少使用。它将首先抛弃后台进程,并优先于前台应用程序,但仍然存在限制。

在“过去”,你能幸运地获得 20Mb。我确信您可以安全地在 iPad 上获得比这更多的内容,但显然它还不到 50Mb。

您没有说明通过释放背景图像释放了多少内存,但似乎您需要缓存更少的数据。您可能还需要检查 Leaks(也在 Instruments 中)以确保您正在释放您认为是的对象。