De OSMemoryNotification.h,
/*
** Threshold values for notifications
*/
typedef enum {
OSMemoryNotificationLevelAny = -1,
OSMemoryNotificationLevelNormal = 0,
OSMemoryNotificationLevelWarning = 1,
OSMemoryNotificationLevelUrgent = 2,
OSMemoryNotificationLevelCritical = 3
} OSMemoryNotificationLevel;
totoal 5 niveaux de mémoire avertissement (-1,3).
Sujet de Mémoire avertissement de Niveau de description, @KennyTM la réponse est excellente.
Je veux ajouter plusieurs points qui peuvent aider les PM et les autres.
Que devez-vous faire lorsque, ayant Mémoire Avertissement de Niveau?
Dès la réception de ces avertissements, votre gestionnaire de méthode doit répondre immédiatement en libérant de toute inutiles de la mémoire. Par exemple, le comportement par défaut de la classe UIViewController est de purger son point de vue, si ce point de vue n'est pas actuellement visible; les sous-classes peuvent compléter le comportement par défaut par la purge supplémentaire des structures de données. Une application qui maintient un cache des images peuvent réagir en libérant toutes les images qui ne sont pas actuellement à l'écran.
Comment observer le Niveau de Mémoire avertissement?
À partir de http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/PerformanceTuning/PerformanceTuning.html
Lorsque le système distribue un peu de mémoire avertissement à votre application, répondre immédiatement. iOS en informe toutes les applications en cours d'exécution à chaque fois que la quantité de mémoire libre descend en dessous d'un seuil de sécurité. (Il ne notifie pas suspendu applications.) Si votre application reçoit cet avertissement, il doit libérer davantage de mémoire que possible. La meilleure façon de le faire est de supprimer les références fortes pour les caches, les objets de l'image, et d'autres objets de données qui peut être recréé plus tard.
UIKit fournit plusieurs façons de recevoir de mémoire faible avertissements, y compris les suivantes:
- Mettre en œuvre les applicationDidReceiveMemoryWarning: méthode de votre application
délégué.
- Remplacer le didReceiveMemoryWarning méthode dans votre personnalisé
Sous-classe UIViewController.
- S'inscrire pour recevoir la
UIApplicationDidReceiveMemoryWarningnotificationnotification.
Comment Réduire l'Encombrement Mémoire de Votre Application?
- Éliminer les fuites de mémoire.
- Faire des fichiers de ressources aussi petite que possible.
- Utilisation de Base de Données SQLite ou de grands ensembles de données.
- Charger les ressources paresseusement.
- Créer votre programme à l'aide de la Manette de l'option.
Des détails à l' http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/PerformanceTuning/PerformanceTuning.html
Comment allouer de la mémoire à bon escient?
-
Réduisez votre utilisation de autoreleased objets : automatique référence
de comptage (ARC), il est préférable d'alloc/init objets et de laisser le
version du compilateur pour vous au moment opportun. C'est vrai
même pour les objets temporaires qui, dans le passé, vous pourriez avoir
autoreleased pour les empêcher de vivre le passé de la portée de la
méthode actuelle.
-
Imposer de limites de taille sur les ressources : Éviter le chargement d'un grand fichier de ressources
un plus petit on va faire. Au lieu d'utiliser une image en haute résolution,
utilisez l'une qui est d'une taille appropriée pour iOS dispositifs. Si vous
doit utiliser les gros fichiers de ressources, de trouver des moyens pour charger uniquement la partie de
le fichier que vous avez besoin à un moment donné. Par exemple, plutôt que de
charger tout le fichier en mémoire, l'utilisation du pamm et munmap fonctions
pour la carte des portions du fichier en mémoire. Pour plus d'
informations sur le mappage des fichiers en mémoire.
-
Éviter la surabondance des ensembles de problèmes : Unbounded ensembles de problème peut nécessiter
un nombre arbitrairement grand de données à calculer. Si le jeu nécessite
plus de mémoire que ce qui est disponible, votre application peut être impossible d'effectuer la
les calculs. Vos applications doivent éviter de tels ensembles chaque fois que possible et
de travailler sur les problèmes connus avec les limites de la mémoire.