sistema - ¿Cómo se detectan fugas de memoria en el iPhone?
liberar espacio sistema iphone (12)
Estoy usando la función Leaks Instruments a través de Xcode para (intentar y) encontrar fugas de memoria. Todavía no he descubierto cómo usar este programa. Hago clic en Fugas en el programa y veo que la memoria aumenta a medida que hago varias cosas en el simulador. Tengo el panel Detalle ampliado mostrado. Lo único en el panel de detalles ampliados que hace referencia a mi aplicación es principal. Como en el método principal producido por Xcode. Todo lo demás es UIKit, Foundations y otras clases de SDK que no escribí. ¿Qué estoy haciendo mal porque no aparece nada desde mi aplicación?
Antes de golpear 3 minutos, hay más de 100 fugas que suman un total de 2.5k. ¿Es esto común?
Cambie la vista a "Detalle ampliado" en el panel de instrumentos. Esto le mostrará la traza de la pila de cada objeto filtrado después de detener la grabación y seleccionar el objeto filtrado.
Usted ve llamadas en la API, pero lo que le interesa es encontrar el último método de su aplicación antes de las llamadas API, que es donde se encuentra la fuga.
Un consejo: active "recopilar contenido de la memoria" en la vista de fugas. Ver los valores del objeto también debería ayudar a encontrar dónde está el problema.
No quieres ninguna filtración. 100 fugas no es típico (al menos en mis aplicaciones;) Típico debería ser 0.
No estoy familiarizado con el uso de Leaks, pero siempre puedes intentar ejecutar el analizador Clang en tu código para ver si eso puede hacer que todo salga bien: http://clang.llvm.org/StaticAnalysis.html . A menudo puede encontrar muchos errores que pueden conducir a pérdidas de memoria.
Tenga en cuenta también que la herramienta de fugas no le mostrará instancias en las que los objetos se retengan en exceso y sigan retenidos. Las fugas son casos en los que los objetos que deberían haberse soltado simplemente se quedan sin nadie para limpiarlos. Los objetos retenidos quedan válidamente retenidos aunque pienses que deberían haber desaparecido, por lo que la herramienta de fugas no puede señalarlos, ya que todavía se mencionan y no hay forma de diferenciarlos de los objetos que aún deben conservarse.
Para encontrarlos, use la herramienta de informes de memoria y asegúrese de que el uso de la memoria disminuya por completo después de liberar un objeto. Si nota que algo no está liberando memoria, puede comenzar colocando puntos de interrupción en dealloc para ver si lo que espera ver liberado realmente se está liberando.
Debe buscar ambos casos para mantener una huella de memoria limpia.
He escrito un tutorial sobre el uso de instrumentos para rastrear las pérdidas de memoria del iPhone. No estoy seguro si te ayudará con lo que estás tratando o no ... pero no podría lastimar. :-)
http://www.streamingcolour.com/blog/tutorials/tracking-iphone-memory-leaks/
Tenga en cuenta que el simulador puede tener fugas cuando el dispositivo no lo haga. Ya corrí hacia eso una vez con la clase UITableViewController.
Use LLVM / Clang Static Analyzer.
Xcode: ejecutar -> Comenzar con la herramienta de rendimiento -> Fugas
Para detectar fugas de memoria puede usar la función "compilar y analizar" de Xcode.
Simplemente seleccione Build -> Build and Analyze en el menú de Xcode.
Hizo un resumen de las principales herramientas de pérdida de memoria: http://bcaccinolo.wordpress.com/2010/09/15/iphone-essential-performance-tools-list/
Las filtraciones de la aplicación que se pueden encontrar en Xcode: run -> Start with Performance Tool -> Leaks
.
La utilidad de Instrumentos de Apple que se puede encontrar en /Developer/Applications/Performance Tools
.
Run -> Start with Performance Tool -> Leaks
Una de las mejores maneras de encontrar las pérdidas de memoria es Seleccionar producto-> Analizar. En la izquierda, Xcode muestra en qué archivo tiene fugas de memoria. ¿Cuáles son las variables que causan fugas de memoria? Esta es una de las mejores maneras de encontrar fugas de memoria.