我可以使用多少剩余内存?

an0*_*an0 9 memory ios

我的问题:

我在我的应用程序中处理图像流.有些图像真的很大.因此,在处理图像之前,我需要一种方法来判断是否可以使用剩余的内存来处理它.但我怎么知道我可以使用多少剩余内存?

我的研究结果:

  1. 我可以通过此UIDevice扩展知道总内存用户内存.
  2. 我可以知道虚拟,居民,有线,活跃,不活跃,以及可用内存通过.

我的日志:

2013-12-13 11:15:05.966 Total Memory: 505 MB    User Memory: 434.3 MB
2013-12-13 11:15:05.967 Virtual: 348.7 MB   Resident: 6.3 MB    Free: 254.1 MB  Inactive: 35 MB Active: 70.7 MB Wired: 70.6 MB
2013-12-13 11:15:57.742 Virtual: 530.2 MB   Resident: 95.2 MB   Free: 160.6 MB  Inactive: 45 MB Active: 74.1 MB Wired: 72 MB
2013-12-13 11:16:41.320 Virtual: 569.2 MB   Resident: 88 MB Free: 121 MB    Inactive: 46.4 MB   Active: 71.8 MB Wired: 76.3 MB
2013-12-13 11:16:46.254 Virtual: 612.9 MB   Resident: 88.7 MB   Free: 50.2 MB   Inactive: 33 MB Active: 64.2 MB Wired: 117.7 MB
2013-12-13 11:16:49.536 Virtual: 525.6 MB   Resident: 89.9 MB   Free: 3.6 MB    Inactive: 33.8 MB   Active: 154.3 MB    Wired: 71.7 MB
2013-12-13 11:16:50.854 Virtual: 568.9 MB   Resident: 90.1 MB   Free: 139.5 MB  Inactive: 35 MB Active: 64.1 MB Wired: 71.2 MB
2013-12-13 11:16:56.358 Virtual: 613.8 MB   Resident: 92.6 MB   Free: 51.3 MB   Inactive: 35.1 MB   Active: 107.1 MB    Wired: 71.5 MB
2013-12-13 11:17:05.034 Virtual: 658.4 MB   Resident: 83.9 MB   Free: 48 MB Inactive: 30.5 MB   Active: 62.4 MB Wired: 70.1 MB
2013-12-13 11:17:15.196 Virtual: 587.4 MB   Resident: 143.1 MB  Free: 194 MB    Inactive: 6.2 MB    Active: 15.1 MB Wired: 69.5 MB
2013-12-13 11:17:18.483 Virtual: 629.3 MB   Resident: 145.2 MB  Free: 97.2 MB   Inactive: 6.3 MB    Active: 47.3 MB Wired: 92.3 MB
2013-12-13 11:17:21.098 Virtual: 675.5 MB   Resident: 145.2 MB  Free: 52.7 MB   Inactive: 24.2 MB   Active: 51.6 MB Wired: 69.3 MB
2013-12-13 11:17:22.133 Received memory warning.
2013-12-13 11:17:22.187 Virtual: 711.3 MB   Resident: 172.1 MB  Free: 36.1 MB   Inactive: 20.4 MB   Active: 1.8 MB  Wired: 114.3 MB
2013-12-13 11:17:22.477 Received memory warning.
2013-12-13 11:17:22.480 Virtual: 568.1 MB   Resident: 124.7 MB  Free: 194.6 MB  Inactive: 20.9 MB   Active: 3.3 MB  Wired: 112.4 MB
2013-12-13 11:17:22.571 Virtual: 522.6 MB   Resident: 36.2 MB   Free: 282.4 MB  Inactive: 20.9 MB   Active: 3.9 MB  Wired: 66.8 MB
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. iOS上的虚拟内存量意味着什么?据我所知,iOS没有交换,因此没有涉及硬盘.但我发现它可以和大部分时间都超过用户内存甚至总内存.
  2. 常驻内存和{ 有线,有效,无效 }内存之间的关系是什么?我知道后一组之间的关系.
  3. 为什么{ 有线,有效,无效,自由 }内存的总和不一致?这个总和与总内存用户内存虚拟内存之间的关系是什么?
  4. 如何计算我可以在我的应用程序中使用的剩余内存量?

对于上面的最后一个问题,我尝试只使用空闲内存.我确定这是不对的,因为大部分时间的可用内存非常少,而且我可以使用的东西很容易超过它而没有任何问题.我也尝试过(可用内存 + 非活动内存).似乎还不是很正确,因为我可以在我的实验中使用更多而没有问题.这里涉及的一个难点是,当我的应用程序处于活动状态并且需要更多内存时,系统可以杀死其他非活动应用程序,以便为我的应用程 在计算我可以使用的剩余内存时,我需要考虑以后的备用金额.

Ber*_*ter 0

我目前不知道有什么方法可以知道你还剩下多少内存。

但是,iOS 确实会向您的应用程序发出内存警告,让您知道可用内存非常紧张。如果您的应用收到这些警告之一,您应该开始释放内存。