sen*_*thu 39 iphone memory-management objective-c ios
iOs是否在内存管理中使用非连续或连续的分配?假设用户分配的内容超过128 MB,应用程序是否会被关闭?或者内存将由iOS管理,就像用户分配内存并在Deallocate方法中错过deallocate一样?是否可以使用明确定义的数据结构分配在应用程序中使用超过120 MB?
Sky*_*leh 74
来自单独内存分配的块不是连续分配的(单独调用alloc,malloc,new等).否则它们是连续分配的(从对malloc的同一个调用,例如new float [30]).根据Apple的说法,当您使用超过20mb的内存时,您的应用程序可能会因内存使用而被关闭.然而,在实践中,你可以了解...
如果您真的"需要"移动应用程序的那么多内存,您应该将数据保存到临时文件并对其进行处理.一种简单的方法是使用内存映射文件.
Dip*_*ama 62
您可以使用内存<您的设备内存容量
(例如,你使用40 Mb的RAM,然后为一些简短的计算分配80 Mb的更多).在这种情况下,iOS会立即终止您的应用程序.1
用户使用此工具测试的结果列表:
装置:(碰撞量/总量/总量百分比)2
- iPad1:127MB/256MB/49%
- iPad2:275MB/512MB/53%
- iPad3:645MB/1024MB/62%
- iPad4:585MB/1024MB/57%(iOS 8.1)
- iPad Mini第一代:297MB/512MB/58%
- iPad Mini视网膜:696MB/1024MB/68%(iOS 7.1)
- iPad Air:697MB/1024MB/68%
- iPad Air 2:1195MB/2048MB/58%(iOS 8.x)
- iPad Pro 12.9:3064MB/3981MB/77%(iOS 9.3.2)
- iPad Pro 9.7":1395MB/1971MB/71%(iOS 10.0.2(14A456))
- iPod touch第四代:130MB/256MB/51%(iOS 6.1.1)
- iPod touch第五代:286MB/512MB/56%(iOS 7.0)
- iPhone4:325MB/512MB/63%
- iPhone4S:286MB/512MB/56%
- iPhone5:645MB/1024MB/62%
- iPhone5S:646MB/1024MB/63%
- iPhone6:645MB/1024MB/62%(iOS 8.x)
- iPhone6 +:645MB/1024MB/62%(iOS 8.x)
- iPhone6s:1396MB/2048MB/68%(iOS 9.2)
- iPhone6s +:1195MB/2048MB/58%(理论上未经测试)
- iPhoneSE:1395MB/2048MB/69%(iOS 9.3)
- iPhone 6s +:1392MB/2048MB/68%(iOS 10.2.1)
- iPhone 7+:2040MB/3072MB/66%(iOS 10.2.1)
- iPhone X:1392/2785/50%(iOS 11.2.1)
有关此问题的更多信息.
我不知道应用程序内存使用限制是否为 128 MB。但如果您消耗更多内存,您的应用程序将收到内存警告。如果您处理它们并清除缓存和稍后可以创建的其他对象,您的应用程序将不会退出。如果您忽略它们,您的应用程序将退出。