2011-01-02 8 views
19

¿Es posible controlar la cantidad de memoria que consume su aplicación?¿Supervisa el uso de memoria en una aplicación de iphone?

+0

Todas las respuestas apuntan a herramientas que puede utilizar en XCode cuando un dispositivo está atado. ** Me encantaría saber si una aplicación puede determinar la cantidad de memoria que está usando en la actualidad, cuando se está ejecutando en la naturaleza (en el teléfono de un consumidor). ** Si alguien sabe esto, increíble. – Fattie

+2

@Joe - Ben muestra una forma de hacer esto usando las funciones de Mach aquí: http://stackoverflow.com/questions/2798638/available-memory-for-iphone-os-app/2798771#2798771, que es idéntico a lo que Andrew tiene en su respuesta. –

+0

posible duplicado de [Recuperar mediante programación el uso de memoria en iPhone] (http://stackoverflow.com/questions/787160/programmatically-retrieve-memory-usage-on-iphone) – CRABOLO

Respuesta

3

Puede usar los instrumentos. Se proporciona con iOS SDK.
es más preciso con un dispositivo de entrenamiento ...

lanzarlo, elegir un tipo de monitoreo (Asignación, fugas, Monitor de Actividad), elija proceso y el objetivo de monitorear y luego haga clic en el botón de grabación.
Al hacer clic en este botón, la aplicación se abre sola.

Cuando haya terminado, haga clic en el botón de detención para detener el monitoreo.

Puede encontrar más información acerca de este programa aquí: About Instruments

14

Sí. En Xcode, abra su proyecto y elija Ejecutar>Ejecutar con la herramienta de rendimiento>Asignaciones. Esto iniciará una aplicación llamada Instruments, que se puede usar para analizar su aplicación. En ese caso específico, registrará todas las asignaciones de objetos, lo que le brinda una buena visión general de la huella de su memoria. Puede usar esto con ambos, el simulador de iOS y un dispositivo real. Debería preferir analizar la aplicación mientras se ejecuta en un dispositivo iOS para obtener resultados óptimos.

Los instrumentos pueden hacer mucho más para ayudarlo a optimizar sus aplicaciones, por lo tanto, debe prestarle más atención al Instruments User Guide.

+0

Esto es ahora Producto -> Analizar -> Asignaciones. Deja de mover cosas, Apple, es desagradable. –

+5

Hacer ese producto -> Perfilado (clic) -> Asignaciones –

1

Si tiene una cuenta de desarrollador de Apple, consulte la actual WWDC sobre instrumentos y optimice la memoria en ios. Realmente vale la pena ver si puedes entender rápidamente cómo funcionan los instrumentos.

27

En realidad, es probable que sea más importante saber cuánta memoria es libre, en lugar de cuánto usa la aplicación. Aquí hay algo de código para hacer esto:

#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

Gracias, esto fue muy útil. Lo colocamos en un ciclo de devolución de llamada para comparar huellas de memoria de dos enfoques diferentes. Sentimos que los resultados de esto eran más consistentes y tenían más sentido que los instrumentos. – Kibitz503

+3

¿Puedo preguntar por qué sería más útil saber cuánta memoria es gratuita en comparación con la cantidad que está siendo utilizada por la aplicación actual? Cuánto es gratis solo afecta la cantidad de spike de retraso en el futuro cercano en caso de que se realice la asignación, mientras que el uso total informaría si ** la finalización de la aplicación ** es inminente. No puedo imaginar una sola situación en la que lo primero sea más útil saber que lo segundo. Dirijo a los lectores [aquí] (http://stackoverflow.com/a/7990532/340947) para conocer el uso actual de la aplicación. –

+3

Cuando alguien pregunta por A, no le digas que A no es tan importante como B. –

1

Aquí puede verificar su memoria de funcionamiento. No daré detalles de lo que está consumiendo, sino una buena cantidad total de memoria.

enter image description here

Cuestiones relacionadas