dug*_*gla 85 warnings memory-management ipad
关于在iPhone OS设备上管理内存的黑色艺术:不同级别的内存警告意味着什么.1级?2级?拨号盘是11吗?
背景:经过大量的内存压力测试期 - 包括在播放iPod音乐播放器应用程序时运行我的iPad应用程序,我倾向于忽略我收到的随机但不常见的内存警告.我的应用程序永远不会崩溃.永远.我的应用程序是无泄漏的.而且,mems警告似乎并不重要.
谢谢,
道格
ken*_*ytm 193
SpringBoard记录内存级别警告.作为应用程序开发人员,您无需关心它.只是回应-{application}didReceiveMemoryWarning就足够了.
有4个级别的警告(0到3).这些是从内核内存观察器设置的,可以通过不那么公共的功能获得OSMemoryNotificationCurrentLevel().
typedef enum {
OSMemoryNotificationLevelAny = -1,
OSMemoryNotificationLevelNormal = 0,
OSMemoryNotificationLevelWarning = 1,
OSMemoryNotificationLevelUrgent = 2,
OSMemoryNotificationLevelCritical = 3
} OSMemoryNotificationLevel;
Run Code Online (Sandbox Code Playgroud)
没有记录如何触发级别.SpringBoard配置为在每个内存级别执行以下操作:
杀死活动应用程序(jetsam)不是由SpringBoard处理,而是launchd.
Wil*_*and 98
基本上警告意味着设备内存不足,并且"如果你可以请你释放一些内存,你就不会主动使用它了! ".如果您的内存管理很紧,并且您没有可以实际丢弃的对象,只需传递消息并忽略它.
Md *_*man 12
/*
** Threshold values for notifications
*/
typedef enum {
OSMemoryNotificationLevelAny = -1,
OSMemoryNotificationLevelNormal = 0,
OSMemoryNotificationLevelWarning = 1,
OSMemoryNotificationLevelUrgent = 2,
OSMemoryNotificationLevelCritical = 3
} OSMemoryNotificationLevel;
Run Code Online (Sandbox Code Playgroud)
totoal 5级内存警告(-1,3).
关于内存级警告说明,@ KennyTM的答案非常好.
我想补充一些可能有助于PM和其他人的相关要点.
有内存级别警告时你应该怎么做?
收到任何这些警告后,您的处理程序方法应立即释放任何不需要的内存.例如,如果该视图当前不可见,则UIViewController类的默认行为是清除其视图; 子类可以通过清除其他数据结构来补充默认行为.维护图像缓存的应用程序可能会通过释放当前不在屏幕上的任何图像来响应.
如何观察记忆水平警告?
当系统向您的应用程序发送低内存警告时,请立即响应.只要可用内存量低于安全阈值,iOS就会通知所有正在运行的应用程序.(它不会通知已暂停的应用.)如果您的应用收到此警告,则必须释放尽可能多的内存.执行此操作的最佳方法是删除对高速缓存,图像对象以及稍后可以重新创建的其他数据对象的强引用.
UIKit提供了几种接收低内存警告的方法,包括:
如何减少应用程序的内存占用?
如何明智地分配内存?
| 归档时间: |
|
| 查看次数: |
56879 次 |
| 最近记录: |