簡體   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