109 votes

Récupérer par programme l’utilisation de la mémoire sur iPhone

J’essaie de récupérer la quantité de mémoire que mon application iPhone utilise à tout moment, par programme. Oui je suis conscient sur ObjectAlloc/fuites. Je ne suis pas intéressé dans ceux, seulement de savoir si il est possible d’écrire du code et obtenir le nombre d’octets utilisés et signalez-le via NSLog.

Merci.

136voto

Jason Coco Points 52303

Pour obtenir les octets de la mémoire de votre application, vous pouvez faire quelque chose comme l'exemple ci-dessous. Cependant, vous devriez vraiment se familiariser avec les différents outils de profilage, ainsi que ils sont conçus pour vous donner une meilleure image de l'utilisation de plus-tout.

#import <mach/mach.h>

// ...

void report_memory(void) {
  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 ) {
    NSLog(@"Memory in use (in bytes): %u", info.resident_size);
  } else {
    NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
  }
}

Il y a également un champ dans la structure de l'info.virtual_size qui vous donnera le nombre d'octets de mémoire virtuelle disponible (ou de la mémoire allouée à votre application en tant que potentiel de la mémoire virtuelle en tout cas). Le code de pgb des liens vers vous donnera la quantité de mémoire disponible sur l'appareil et le type de mémoire qu'il est.

18voto

Doug Null Points 1244

Voici report_memory() amélioré pour afficher rapidement l’état de la fuite dans la NSLog().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X