繁体   English   中英

iOS相当于增加堆大小

[英]iOS equivalent to increasing heap size

iOS应用程序(大多数情况下)是用Objective-C编写的,它是C的子集,因此是一种数据托管语言,与Android / Java不同。

在Android中,您只需在XML android清单中添加以下一行即可增加堆大小:

<application android:largeHeap="true"/>

是否有iOS版本可以执行此类操作?

在iOS中,您对内存没有任何控制权。

它全部由内核管理。 因此,您不能增加堆大小。

正如评论中指出的那样,内存管理在iOS中具有不同的概念。

您将获得尽可能多的可用内存,但是如果应用程序使用了太多内存,它将被系统杀死。

既然您已经解释了目标,那么您就不应该将大文件下载到内存中,这会造成麻烦。 相反,您应该在获得响应时将其直接保存到磁盘。

查看Apple的“ 内存使用性能指南 ”,以了解iOS如何不管理交换空间。

尽管OS X支持后备存储,但iOS不支持。 在iPhone应用程序中,只需将已存在于磁盘上的只读数据(例如代码页)从内存中删除,然后根据需要从磁盘中重新加载。 操作系统永远不会从内存中删除可写数据。 相反,如果可用内存量下降到某个阈值以下,则系统会要求正在运行的应用程序自动释放内存以为新数据腾出空间。 无法释放足够内存的应用程序将终止。

iOS尝试为每个应用程序提供OS可以保留的尽可能多的设备内存。 但是,每个应用程序都限于设备的物理内存。 没有选择分配更大的块,并且期望它们可以根据需要交换到磁盘的选项。

因此,在iOS中操作堆大小不是一个有意义的概念。 每个应用程序已经具有操作系统可以提供的最大堆。 相反,应用程序必须尝试最小化其内存占用量,以保留在主机设备的可用空间内。 这意味着响应于内存警告而清除内存中的高速缓存,对磁盘上的资源进行流式访问(如@CouchDeveloper在评论中建议的那样),并最大程度地减少总体上使用的内存量。

作为额外的麻烦,iOS尝试保持内存的使用。 未使用的内存浪费了容量,操作系统可以将更多应用程序挂起并保留在内存中,而不是终止,从而为用户提供更好的服务。 结果,尝试测量可用的空闲内存不会给出有意义的结果。 当设备的可用内存不足时,其他应用程序将响应内存警告或完全终止而减少其使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM