【问题标题】:Memory warning threshold value for all iPad version所有 iPad 版本的内存警告阈值
【发布时间】:2013-03-09 05:52:15
【问题描述】:

iOS 应用程序有内存警告级别 1 和级别 2。问题是对于所有 iPad 设备(从 iPad 1 到 iPad 4、mini),发出警告的响应阈值是多少。例如,对于 iPad1,是 100 MB 吗?

谢谢


我也曾经在收到内存警告时打印出使用的内存。

#import "mach/mach.h"
-(void) report_memory {

    struct task_basic_info info;
    mach_msg_type_number_t size = sizeof(info);
    kern_return_t kerr = task_info(mach_task_self(),
                                   TASK_BASIC_INFO,
                                   (task_info_t)&info,
                                   &size);
    if( kerr == KERN_SUCCESS ) {
        DLog(@"Memory in use (in MB ): %u", info.resident_size/1024/1024);
    } else {
        DLog(@"Error with task_info(): %s", mach_error_string(kerr));
    }
}

【问题讨论】:

  • 这有关系吗?如果您看到 1 级内存警告,那么在发出 2 级内存警告并且您的应用被终止之前,您的应用几乎没有时间清理其行为。
  • 如果你的产品需要支持所有不同的设备,你的内存问题会很严重,比如总是弹出内存警告,你的老板在背后踢你,你怎么看?该仪器可以让您了解实际内存使用量,我们需要考虑优化解决方案,特别是针对iPad1。是的,这很重要。

标签: ios ipad memory memory-warning


【解决方案1】:

我不认为Apple官方记录了它,主要是因为它可能会在iOS版本之间发生变化,但这些是"Learn iPhone and iPad cocos2d Game Development"书中所述的数字:

+-----------------------------------------------------------------+  
| Installed Memory |  Available Memory | Memory Warning Threshold |
+-----------------------------------------------------------------+  
| 128 MB           |  35-40 MB         |  20-25 MB                | 
| 256 MB           |  120-150 MB       |  80-90 MB                | 
| 512 MB           |  340-370 MB       |  260-300 MB (estimated)  |
+-----------------------------------------------------------------+

【讨论】:

  • 我认为这些是针对 iOS 6 的 - 有人更新了 iOS 7 的数据吗?感谢您的帮助。
【解决方案2】:

根据练习和记忆... iPad 1 将在 16Mb 左右触发 1 级,并可能在 32mb 左右进入 2 级。 iPad 2/3/mini 似乎可以达到大约 50Mb 到 64Mb。 iPad 4 我还没有真正得到确凿的结果,但从规格来看,我预计在开始抱怨之前会达到大约 100-128Mb。

这是我至少在测试期间在仪器中观察到的。 我已经开始运行一个宏来检测设备类型,并通过禁用石英绘制的项目、重图像等优雅地回退以支持旧设备......

同样,这些不是任何规格的硬数据,只是我的测试结果。

这是我在应用程序委托中使用的一个类方法,例如检测 iPad 1...

+ (BOOL)isiPad1 {
  struct utsname platform;
  int rc = uname(&platform);
  if(rc == -1) return NO;
  return !strcmp("iPad1,1", platform.machine);
}

【讨论】:

  • 这些数字很好,但最终(仅作为警告):这是一个实现细节,可能取决于操作系统甚至否。应用程序
  • 我完全同意,我建议定期检查以保持最新的性能,尤其是在 iOS 版本中。
  • 哦,太好了!好帖子
猜你喜欢
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 2012-10-06
  • 2011-07-26
相关资源
最近更新 更多