Pregunta

Mi aplicación se bloquea después de unos 20 minutos con el estado 101 (Sin memoria, creo)

Depuración con instrumentos: ObjectAlloc y Leaks no me dan pistas. El gráfico ObjectAlloc se mantiene en un buen nivel constante de alrededor de 1 millón de bytes (1 MB), al igual que el número neto de asignaciones. Me he deshecho de todas las filtraciones.

Pensé que podría tener algo que ver con el número de hilos, pero graficarlos en ObjectAlloc también muestra que son constantes.

¿Alguien puede señalarme en la dirección de otra herramienta u otra vía de investigación?

¿Fue útil?

Solución

Arregla todo lo que Clang encuentra. Análisis estático de LLVM Clang

Otros consejos

Recuerde que los objetos asignados por el sistema (y que incluyen cosas como imágenes y sonidos) no se rastrean en los instrumentos (aunque los recuentos de retención de nivel superior sí, por supuesto). Por lo tanto, es factible que esté cargando imágenes, por ejemplo, que no contribuirán mucho al uso de su memoria como se muestra, ¡pero pueden agotar mucha memoria real!

Si nada de esto toca ningún acorde, puede probar el enfoque de depuración sustractiva: (tome una copia de su proyecto) recorte partes de la funcionalidad hasta que el problema desaparezca o obtenga lo más pequeño posible que lo reproduzca. Eso al menos debería ayudarte a encontrar dónde está el cuello de botella. Es cierto que esto será difícil (a) porque tendrá que esperar unos 20 minutos cada vez que realice la prueba (pero si hace que este sea un procedimiento en segundo plano, no es tan malo) y (b) porque la naturaleza de los problemas de memoria es que existe puede no ser una sola causa, sino una masa crítica de causas más pequeñas.

¡Buena suerte!

Mis experiencias con Object Alloc no han sido tan buenas. No siempre le proporciona la memoria real utilizada por su aplicación.

En su lugar, use Object Alloc con Activity Monitor. Asegúrese de utilizar la "Memoria física libre" y "Memoria física utilizada" opciones en el monitor de actividad. Eso le dirá exactamente cuánta memoria está usando su aplicación.

¿Qué quieres decir con "buen nivel". ¿No se eleva con el tiempo, en absoluto? Cuánta memoria total: podría ser que el teléfono necesita memoria para alguna otra aplicación y la suya es demasiado grande para mantenerse activa.

El código de error 101 significa que el iPhone OS forzará a cerrar su aplicación. Si está utilizando UIImageViews en su aplicación, asegúrese de administrar la memoria en ellos. Descubrí que una vez que mi aplicación supera los 10/12 MB, el iPhone la termina.

Si no está utilizando ninguna vista de imágenes (o imágenes grandes), entonces su código de fondo está consumiendo demasiado espacio.

Todo lo que puedo decir es que debe mirar su asignación con más cuidado y administrar las vistas que guarda en la memoria en cualquier momento.

Ejecute su aplicación en Instrumentos (Ejecutar - > Comience con la herramienta de rendimiento - > Fugas) para ver dónde se asigna su memoria.

¡Espero que esto ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top