2010-12-29 21 views
7

Tengo una aplicación para iPad con uso intensivo de gráficos que cuenta con UIWebView. Usando el simulador (iOS 4.2.1), puedo ver que Real Mem aumenta bastante a medida que navego. Cuanto más navego, más RAM usa. Cuando cierro el UIWebView y lo lanzo, algunos de la memoria que utiliza se libera, pero no todo. Esto es molesto Bueno, quizás sea porque no está desasignado de inmediato. Multa. Pero entonces esperaría que el sistema hiciera algo de limpieza cuando hay una advertencia de memoria. Sin embargo, si busco alrededor, luego cierro el UIWebView (y lo libero), luego disparo una advertencia de memoria en el simulador, ¡Real Mem no cambia! WTF?¿Por qué UIWebView no libera toda su memoria?

¿Por qué es esto? ¿Por qué UIWebView no es mejor para liberar memoria al sistema? ¿Y por qué no parece responder a las advertencias de memoria? ¿Me estoy perdiendo de algo?

+2

Monitor de actividad es inútil para la depuración. Utilice el instrumento de asignaciones. Tenga en cuenta que el simulador puede comportarse de manera significativamente diferente que una aplicación en el dispositivo. – bbum

+0

Huh, interesante. Jugando con asignaciones (es curioso cómo nunca antes lo había notado, centrándome en arreglar fugas en el pasado), puedo obtener Bytes totales de hasta 256MB con solo unos minutos de uso. Live bytes es de 4-7MB, sin embargo. ¿Total de bytes acumulados? Necesito encontrar un tutorial rápido ... – theory

+0

Oh, lo encontré en TFM: "En general: el número total de objetos o bloques de memoria de este tipo que se han asignado, incluidos los que se han liberado". ¡Increíble! ¡Mi aplicación no usa mucha memoria después de todo! – theory

Respuesta

6

Añadiendo como una respuesta ya que parecía haber ayudado:

Monitor de actividad es inútil para propósitos de depuración. Use las asignaciones Instrumento. Tenga en cuenta que el simulador puede comportarse de forma significativamente diferente que una aplicación en el dispositivo.

Feliz de haber ayudado. A menudo encuentro que activar "Solo seguimiento de asignaciones en vivo" es bastante útil para ver el conjunto de trabajo en curso de mis aplicaciones. El seguimiento en vivo/muerto también es útil.

Ah, y heapshot analysis (article on my weblog) pueden ser extremadamente efectivos para rastrear las pérdidas de memoria.

¿Fugas? Nunca lo use El análisis de Heapshot lo reemplaza por completo. Su experiencia puede ser diferente.

+0

¡Gracias bbum, lo verificará! – theory

Cuestiones relacionadas