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

时间:2011-03-17 09:56:28

标签: objective-c cocoa-touch ios4 xamarin.ios

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

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

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

1 个答案:

答案 0 :(得分:2)

我认为这里没有任何神秘的东西 - 我确信这不是你想听到的。没有使用“安全”内存量的绝对数字。规则是:当操作系统告诉您使用过多时,请少用。它将首先抛弃后台进程,优先考虑您的前台应用程序,但仍有限制。

在“过去的日子里”,你曾经很幸运能获得20Mb。我相信你可以安全地在iPad上获得更多,但显然,它不到50Mb。

你没有说通过发布背景图像释放了多少内存,但似乎你需要缓存更少的数据。您可能还想检查泄漏(也在仪器中)以确保释放您认为自己的物体。