Estoy usando la herramienta ObjectAlloc de Instument en un intento de comprender qué hace la memoria de mi aplicación (iPhone) y cuándo y dónde lo hace.
Realmente me gustaría una explicación básica de estas estadísticas:
- Bytes en vivo
- #Vivo
- #Transitorio
- Bytes generales
Cuando intento calcular cuánta memoria está usando mi aplicación, ¿debo mirar Live Bytes o Overall Bytes? ¿Incluye esto memoria filtrada? ¿Qué son los objetos transitorios?
Gracias
Respuestas:
ObjectAlloc
rastrea toda la asignación y desasignación de memoria durante el tiempo que se ejecuta su programa.El
Living bytes, or Net bytes
es la cantidad de memoria la aplicación está utilizando en el momento de seleccionar en la línea de tiempo. Eso incluirá la memoria filtrada, ya que la memoria filtrada nunca se desasigna.#Living
es cuántas asignaciones de cierto tamaño / tipo de objeto ocurrieron (y aún están asignadas). Esto es muy útil cuando se buscan fugas.Por ejemplo, si realiza una acción repetidamente (como entrar y salir de un controlador de vista modal) y ve que
#Living
un objeto crece en la misma cantidad cada vez, entonces probablemente esté filtrando esos objetos. Luego puede confirmar profundizando y viendo la línea exacta de código que está asignando los objetos, e incluso ver el índice de tiempo en que se creó cada uno.Overall bytes
incluye memoria que ha sido liberada. Es útil realizar un seguimiento de ese número con fines de optimización del rendimiento, pero no si solo está tratando de ver su huella de memoria actual o buscar fugas.fuente
Explicación de estadísticas de los documentos de Apple. Enlace al documento
fuente