2

我对 iOS 特别陌生,离基本概念还很远。

我在 iOS 书籍和论坛中读到应用程序由于内存不足而崩溃,但为什么会崩溃?如果有人可以发出一些光,那将是有帮助的。

4

4 回答 4

6

iOS 设备将虚拟内存与分页一起使用。由于它是一个移动设备并且没有可扩展内存或相当大的内存可用(如硬盘驱动器),因此页面的可用性受到各种因素的限制,例如打开的应用程序数量,不同应用程序的分配等。此外,一些板载应用程序将始终继续使用某些页面,即使它们处于休眠状态,例如 safari 、 i-tunes 、消息传递等。因此,基本上随着应用程序活动的数量,您的应用程序可以使用的页面数量会进一步减少.

因此,当您的应用程序的分配速率超过其他应用程序释放页面的速率时,您的应用程序将崩溃。

操作系统只释放内存中的只读数据,不释放可写数据。当可写数据超过某个阈值时,操作系统会要求应用程序释放内存。无法释放内存会导致崩溃。

苹果内存分配

于 2013-03-16T06:49:06.753 回答
3

它并没有真正崩溃。如果应用程序在收到通知后没有释放足够的内存,则会被内核终止。

为了使这一点变得透明,我们编写了一份崩溃报告,其中包含有关当前情况的详细信息。对用户来说,它看起来就像应用程序崩溃了,因为它突然消失了。

于 2013-03-16T07:04:33.117 回答
2

这些设备没有太多内存,如果您对内存很感兴趣,那么您正在寻找麻烦

iOS 有一个很好的记忆工具叫做 ARC。请在此处阅读完整文档

于 2013-03-16T06:53:42.217 回答
0

我以前在我自己的应用程序中加载仅包含 UIImages 的表格视图时被烧毁了,这可能看起来像表格中的微小缩略图,但最终在幕后成为全分辨率(和大量内存)对象。

处理可能占用内存的对象时需要小心。

但请放心,Apple 提供了诸如 Xcode Instruments 之类的工具,您可以使用它来分析应用程序的内存性能。

于 2013-03-16T06:58:18.260 回答