iOS内存分配 - 应用程序可以使用多少内存?

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的内存时,您的应用程序可能会因内存使用而被关闭.然而,在实践中,你可以了解...

  • iPad 2上的260 MB RAM(感谢RobCroll)
  • 总计512 Mb的设备上有170-180MB的内存(iPhone 4,iPod touch 4g)
  • 具有256 MB RAM的设备上有40-80MB的内存(iPad,iPhone 3gs,iPod touch 3g)
  • 仅有128MB内存的设备上25 MB(IPhone 3g,iPhone 2g,iPod touch 1g-2g)

如果您真的"需要"移动应用程序的那么多内存,您应该将数据保存到临时文件并对其进行处理.一种简单的方法是使用内存映射文件.

  • @Hrushikesh这不是问题所在.你不应该为此投票给我. (6认同)
  • 有没有苹果规格文件? (5认同)
  • 没有,只是我说明了我的个人经历. (5认同)

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)

1 /sf/answers/412144841/

2 /sf/answers/1064059881/

有关此问题的更多信息.


Kri*_*nan 0

我不知道应用程序内存使用限制是否为 128 MB。但如果您消耗更多内存,您的应用程序将收到内存警告。如果您处理它们并清除缓存和稍后可以创建的其他对象,您的应用程序将不会退出。如果您忽略它们,您的应用程序将退出。