xcode - ¿Cómo perfilar el uso y el rendimiento de la memoria con Instruments?
performance profiling (3)
La memoria realmente cargada en la memoria física del dispositivo es la memoria Resident Memory
en el VM Tracker Instrument
.
Allocation Instrument
solo marca la memoria creada por malloc/[NSObject alloc]
y parte del buffer de la estructura, por ejemplo, el mapa de bits de la imagen descomprimida no se incluye en el Allocation Instrument
pero siempre ocupa la mayor parte de la memoria.
Mire WWDC 2012 Session 242 iOS App Performance: Memory para obtener la información de Apple.
De todas las plantillas de seguimiento de instrumentos, me encanta usar:
- Zombies para detectar dónde se está
EXEC_BAD_ACCESS
un objeto en exceso, ideal para depurar erroresEXEC_BAD_ACCESS
. - Fugas para detectar fugas de memoria.
- Animación central w Color Blended Layers para detectar la velocidad de fotogramas y las subvistas translúcidas, ideal para suavizar el desplazamiento de
UITableView
.
Siempre escucho a la gente decir el perfil de uso y rendimiento de la memoria de mi aplicación.
- ¿Por qué debería perfil el uso y el rendimiento de la memoria? Mi aplicación funciona bien
- ¿Cómo lo hago?
Utilicé asignaciones y veo que mi aplicación de iPhone comienza con 1 MB de memoria total asignada y crece a 5 MB después del uso normal. ¿Cuál es la cantidad demasiado alta de uso de memoria en el iPhone? iPad? ¿Mac?
Para abordar algunos de los comentarios en la respuesta de Marcos:
Las asignaciones de bytes vivos no incluyen la memoria de textura OpenGL, que es utilizada por CALayer / UIViews. Esta es la fuente del desacuerdo con el Monitor de memoria.
Vea la respuesta a esta pregunta aquí: Comprender el consumo de memoria en iPhone
Para responder a los porqués, el uso de memoria de perfiles es especialmente importante para las aplicaciones de iOS porque los iPhones y iPads tienen mucha menos memoria RAM que los Mac. El iPhone 4 tiene 512 MB de RAM, pero las versiones anteriores tenían 256 o 128 MB. Tenga en cuenta la memoria RAM que utiliza el sistema operativo y la multitarea, y su aplicación no tiene mucha memoria RAM que perder, por lo que es importante saber cuánta memoria utiliza su aplicación.
El rendimiento del perfil es algo que suele hacer cuando su aplicación se ejecuta lentamente. Perfíllo para encontrar los puntos lentos en su código para que pueda hacer que el código se ejecute más rápido. Si su aplicación funciona bien, no tiene mucha necesidad de perfil para el rendimiento.
Para responder a los hows, use el instrumento Allocations para medir el uso de la memoria. La columna Live Bytes en la categoría Todas las asignaciones le indica la cantidad de memoria que su aplicación utiliza actualmente. El análisis de cabecera del instrumento Allocations mide el crecimiento de la memoria en su aplicación. Use el menú en el lado izquierdo de la barra de salto para realizar el análisis de la toma de diapositivas.
El instrumento Time Profiler perfila tu aplicación para el rendimiento. La parte difícil de usar el instrumento Time Profiler es interpretar los resultados. El instrumento Time Profiler no le dirá que su aplicación pasa el 75% de su tiempo en la Función X. Debe buscar en los datos para encontrar los puntos lentos en su código.
En cuanto al uso de memoria aceptable, depende de los dispositivos que desea admitir y la aplicación. Una aplicación como Xcode con 100 MB de RAM estaría bien, pero una aplicación como TextEdit con 100 MB para un documento de una página sería un problema. 5 MB no deberían ser un problema para una aplicación iOS.