memory-management - iPhone 操作系统内存警告。不同级别意味着什么?

标签 memory-management ipad warnings

关于 iPhone OS 设备上管理内存的黑魔法:不同级别的内存警告意味着什么。 1级? 2级?表盘转到 11 了吗?

背景:经过广泛的内存压力测试 - 包括在播放 iPod 音乐播放器应用程序的同时运行我的 iPad 应用程序,我倾向于忽略我收到的随机但不常见的内存警告。我的应用从不崩溃。曾经。我的应用程序没有泄漏。而且,嗯,MEMS 警告似乎并不重要。

谢谢,
道格

最佳答案

SpringBoard 记录内存级别警告。作为应用程序开发人员,您不需要关心它。只需响应 -{application}didReceiveMemoryWarning 就足够了。

<小时/>

警告有 4 个级别(0 到 3)。这些是从内核内存观察器设置的,可以通过 not-so-public function OSMemoryNotificationCurrentLevel() 获得.

typedef enum {
    OSMemoryNotificationLevelAny      = -1,
    OSMemoryNotificationLevelNormal   =  0,
    OSMemoryNotificationLevelWarning  =  1,
    OSMemoryNotificationLevelUrgent   =  2,
    OSMemoryNotificationLevelCritical =  3
} OSMemoryNotificationLevel;

没有记录如何触发级别。 SpringBoard 配置为在每个内存级别执行以下操作:

  1. 警告(非正常)- 重新启动或延迟自动重新启动非必要的后台应用程序,例如邮件。
  2. 紧急 - 退出所有后台应用程序,例如Safari 和 iPod。
  3. 严重及其他 — 内核将接管,可能会杀死 SpringBoard 甚至重新启动。

终止事件应用程序 (jetsam) 不是由 SpringBoard 处理,而是由 launchd 处理。

关于memory-management - iPhone 操作系统内存警告。不同级别意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2915247/

相关文章:

ios - UIDevice 有电话功能吗? iOS8(可以打电话)

ipad - XCode 4 CpResource 错误

security - Angular 2 : sanitizing HTML stripped some content with div id - this is bug or feature?

C分配指针?这是什么?

c++ - 由于未对齐的内存地址,内存地址是否会被破坏?

C 函数参数值自行改变

c# - 匹配文件路径字符串的第一部分

ios - UISplitViewController 中的 ActionSheet 在纵向模式下的行为不同于横向模式

python - Python理解中是否需要局部变量?

java - 这个Android studio警告会导致将来出现任何错误吗?(是否应该考虑进行故障排除?)