2011-01-02 10 views
19

È possibile monitorare la quantità di memoria utilizzata dall'app?L'utilizzo della memoria del monitor in un'app per iPhone?

+0

Tutte le risposte indicano strumenti è possibile utilizzare in XCode quando un dispositivo è legato. ** Mi piacerebbe sapere, se un'app può determinare la quantità di memoria attualmente in uso, quando è in esecuzione in natura (sul telefono di un consumatore). ** Se qualcuno lo sa, fantastico. – Fattie

+2

@ Joe - Ben mostra un modo per farlo utilizzando le funzioni di Mach qui: http://stackoverflow.com/questions/2798638/available-memory-for-iphone-os-app/2798771#2798771, che è identico a quello che Andrew ha nella sua risposta. –

+0

possibile duplicato di [Recupero programmato dell'utilizzo della memoria su iPhone] (http://stackoverflow.com/questions/787160/programmatically-retrieve-memory-usage-on-iphone) – CRABOLO

risposta

3

È possibile utilizzare strumenti. È fornito con iOS SDK.
è più preciso di un dispositivo che il simulatore ...

lanciarlo, scegliere un tipo di monitoraggio (Allocation, Perdite, Activity Monitor), sceglie di processo e di destinazione per monitorare e quindi fare clic sul pulsante di registrazione.
Cliccando su questo pulsante, l'app si apre da sola.

Al termine, fare clic sul pulsante stop per interrompere il monitoraggio.

È possibile trovare maggiori informazioni su questo programma: About Instruments

14

Sì. In Xcode, apri il tuo progetto e scegli Esegui>Esegui con Performance Tool>Allocazioni. Questo avvierà un'applicazione chiamata Strumenti, che può essere utilizzata per analizzare la tua app. In questo caso specifico registrerà tutte le allocazioni di oggetti che ti offrono una buona panoramica del tuo footprint di memoria. Puoi usarlo con entrambi, il simulatore iOS e un dispositivo reale. Si consiglia di analizzare l'app mentre è in esecuzione su un dispositivo iOS per ottenere risultati ottimali.

Gli strumenti possono fare molto di più per aiutarti a ottimizzare le tue app, quindi dai uno sguardo più da vicino allo Instruments User Guide.

+0

Questo è ora Prodotto -> Analizza -> Allocazioni. Smettila di spostare roba in giro, Apple, è odioso. –

+5

Rendi quel prodotto -> Profiling (clicca) -> Allocazioni –

1

Se si dispone di un account sviluppatore Apple, controllare l'attuale WWDC sugli strumenti e ottimizzare la memoria su ios. Vale veramente la pena di vedere se sei tu a capire rapidamente come funzionano gli strumenti.

27

In realtà, è probabilmente più importante sapere quanta memoria è gratuita, piuttosto che quanto la tua app sta utilizzando. Ecco il codice per farlo:

#import <mach/mach.h> 
#import <mach/mach_host.h> 

+(natural_t) get_free_memory { 
    mach_port_t host_port; 
    mach_msg_type_number_t host_size; 
    vm_size_t pagesize; 
    host_port = mach_host_self(); 
    host_size = sizeof(vm_statistics_data_t)/sizeof(integer_t); 
    host_page_size(host_port, &pagesize); 
    vm_statistics_data_t vm_stat; 

    if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS) { 
     NSLog(@"Failed to fetch vm statistics"); 
     return 0; 
    } 

    /* Stats in bytes */ 
    natural_t mem_free = vm_stat.free_count * pagesize; 
    return mem_free; 
} 
+1

Grazie questo è stato molto utile. Lo abbiamo inserito in un ciclo di richiamo per confrontare i footprint di memoria di due diversi approcci. Ci siamo sentiti come i risultati di questo erano più coerenti e più senso allora da strumenti. – Kibitz503

+3

Posso chiedere perché sarebbe più utile sapere quanta memoria è libera rispetto a quanto viene utilizzata dall'app corrente? Quanto è libero influisce solo sulla quantità di lag spiking nel prossimo futuro, se l'allocazione viene eseguita, mentre l'utilizzo totale dovrebbe informare se ** la fine dell'app ** è imminente. Non riesco a immaginare una singola situazione in cui il primo sia più utile da sapere rispetto al secondo. Indirizzo i lettori [qui] (http://stackoverflow.com/a/7990532/340947) per un modo per scoprire l'utilizzo corrente dell'app. –

+3

Quando qualcuno chiede A, non dirgli che A non è importante quanto B. –

1

È possibile controllare la memoria in esecuzione qui. Non fornirai dettagli su ciò che sta consumando, ma una buona quantità di memoria.

enter image description here

Problemi correlati