De OSMemoryNotification.h,
/*
** Threshold values for notifications
*/
typedef enum {
OSMemoryNotificationLevelAny = -1,
OSMemoryNotificationLevelNormal = 0,
OSMemoryNotificationLevelWarning = 1,
OSMemoryNotificationLevelUrgent = 2,
OSMemoryNotificationLevelCritical = 3
} OSMemoryNotificationLevel;
totoal 5 niveles de memoria advertencia (-1,3).
En cuanto a la descripción de la advertencia de Nivel de memoria, la respuesta de @KennyTM es excelente.
Quiero agregar varios puntos relacionados que pueden ayudar a PM y otros.
¿Qué debe hacer cuando se tiene memoria Nivel de advertencia?
Al recibir cualquiera de estas advertencias, el método de su controlador debe responder liberando inmediatamente cualquier memoria innecesaria. Por ejemplo, el comportamiento predeterminado de la clase UIViewController es purgar su vista si esa vista no está actualmente visible; las subclases pueden complementar el comportamiento predeterminado purgando estructuras de datos adicionales.Una aplicación que mantiene un caché de imágenes puede responder liberando cualquier imagen que no esté actualmente en pantalla.
Cómo observar la advertencia de nivel de memoria?
De http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/PerformanceTuning/PerformanceTuning.html
Cuando el sistema le envía una advertencia de poca memoria para su aplicación, responder de forma inmediata. iOS notifica todas las aplicaciones en ejecución cada vez que la cantidad de memoria libre cae por debajo de un umbral seguro. (No notifica las aplicaciones suspendidas). Si su aplicación recibe esta advertencia, debe liberar la mayor cantidad de memoria posible. La mejor manera de hacerlo es eliminar referencias fuertes a cachés, objetos de imagen y otros objetos de datos que puedan volver a crearse más adelante.
UIKit ofrece varias maneras de recibir advertencias de poca memoria, incluyendo las siguientes:
- poner en práctica el método de applicationDidReceiveMemoryWarning: delegado de la aplicación .
- Reemplace el método didReceiveMemoryWarning en su subclase personalizada UIViewController.
- Regístrese para recibir la UIApplicationDidReceiveMemoryWarningNotificationnotification.
Cómo reducir su consumo de memoria de la aplicación?
- Elimina fugas de memoria.
- Haga que los archivos de recursos sean lo más pequeños posible.
- Utilice Core Data o SQLite para grandes conjuntos de datos.
- Cargue los recursos de forma perezosa.
- Crea tu programa usando la opción Thumb.
detalles en http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/PerformanceTuning/PerformanceTuning.html
Cómo asignar memoria sabiamente?
- reducir su uso de objetos autoreleased: Con referencia automática conteo (ARC), es mejor a los objetos init alloc/y dejar que el compilador los pongan en libertad para que en el momento apropiado. Esto es cierto incluso para objetos temporales que en el pasado podría tener liberados automáticamente para evitar que sobrepasen el alcance del método actual .
- Imponer límites de tamaño a los recursos: Evite cargar un archivo de recursos de gran tamaño cuando lo haga uno más pequeño. En lugar de usar una imagen de alta resolución, use una que tenga el tamaño adecuado para los dispositivos basados en iOS. Si debe usar archivos de recursos grandes, busque maneras de cargar solo la parte de el archivo que necesita en un momento dado.Por ejemplo, en lugar de , cargue todo el archivo en la memoria, utilice las funciones mmap y munmap para asignar porciones de archivo dentro y fuera de la memoria. Para obtener más información acerca de mapeo de archivos en la memoria.
- Evite conjuntos de problemas sin límites: los conjuntos de problemas sin límites pueden requerir una cantidad arbitrariamente grande de datos para computar. Si el conjunto requiere más memoria que la disponible, es posible que su aplicación no pueda completar los cálculos . Sus aplicaciones deben evitar tales conjuntos siempre que sea posible y trabajan en problemas con límites de memoria conocidos.
LOL "¡Si pudieras por favor liberar algo de memoria que no estás usando activamente, eso sería genial!" Priceless ;-) Cheers – dugla
Pareces un veterano veterano de la danza de memoria de iPhone OS Wack-a-mole. – dugla
Tomado de _El guardián en el Rye_? 'código genial;)' – wagashi