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

iOS内存分配-应用程序中可以使用多少内存?,ios,objective-c,iphone,memory-management,Ios,Objective C,Iphone,Memory Management,iOs在内存管理中使用非连续或连续分配吗?假设用户分配的内存超过128 MB,应用程序是否会关闭?或者,内存将由iOS管理,就好像用户在deallocate方法中分配内存并错过了deallocate一样?使用定义良好的数据结构分配的应用程序是否可以使用超过120 MB的内存?我不知道应用程序内存使用限制是否为128 MB。但如果您消耗更多内存,您的应用程序将收到内存警告。如果您处理它们并清除缓存和以后可以创建的其他对象,则应用程序不会退出。如果忽略它们,应用程序将退出。在后台,iOS使用mall

iOs在内存管理中使用非连续或连续分配吗?假设用户分配的内存超过128 MB,应用程序是否会关闭?或者,内存将由iOS管理,就好像用户在deallocate方法中分配内存并错过了deallocate一样?使用定义良好的数据结构分配的应用程序是否可以使用超过120 MB的内存?

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

在后台,iOS使用malloc和friends为每个对象分配内存,因此返回的内存确实是连续的。如果尝试分配的连续内存超过可用内存,malloc调用将返回NULL(如果未正确检查,则在尝试访问NULL指针时可能会失败)

来自单独内存分配的块不会连续分配(对alloc、malloc、new等的单独调用)。否则,它们将被连续分配(从对malloc的相同调用,例如newfloat[30])。据苹果称,当你使用超过20mb的内存时,你的应用程序可能会因内存使用而关闭。然而在实践中,你可以得到大约

  • iPad 2上的260 MB内存(感谢RobCroll)
  • 总内存为512 Mb的设备(iPhone 4、iPod touch 4g)上的ram为170-180MB
  • 在具有256MB内存的设备(iPad、iPhone 3gs、iPod touch 3g)上安装40-80MB内存
  • 只有128MB内存(IPhone 3g、IPhone 2g、iPod touch 1g-2g)的设备上有25MB的内存

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

目前,iOS中的内存管理对应用程序没有明确的内存限制。 但当iOS告诉你的应用程序立即释放内存或者它将被关闭时,你可以处理这种情况


128MB对于iOS来说是相当大的内存块。如果您试图分配超过内存限制的内存,应用程序将在没有任何通知的情况下关闭。

您可以使用内存<您的设备ram容量

(例如,您正在使用40 Mb的RAM,然后再为其分配80 Mb的内存 一些简短的计算)。在这种情况下,iOS将杀死您的应用程序 马上

用户通过以下测试发现的结果列表:

设备:(崩溃数量/总数/总数百分比)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迷你视网膜: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)
  • iPhoneX:1392/2785/50%(iOS 11.2.1)
一,

二,


更多信息可在此找到。

是否有任何苹果规范文档?因为您已经给出了限制…(170-180MB内存)没有,那只是我陈述我的个人经历。你应该指导我们如何准确地释放内存。你只是在告诉一些mb问题。因为我面临这个问题,但没有意识到它。我想做与
instagram
picyou
其他应用程序相同的事情。@Hrushikesh问题不是这样问的。你不应该这样做我对主列表中缺失的两款设备进行了测试:*iPhone 6s+:1392MB/2048MB/68%(iOS 10.2.1)*iPhone 7+:2040MB/3072MB/66%(iOS 10.2.1)