mente memoria mejorar ejercitar como xcode ios memory-leaks instruments

xcode - memoria - como ejercitar la mente



Ayuda para encontrar pérdidas de memoria(consejos generales) (3)

Así es como lo abordaría,

  1. Nombre todas sus clases con un prefijo para que pueda verlas fácilmente en Instruments

  2. XCode-> Run-> Run with performance tool-> allocations

Ahora detenga su aplicación y escriba el nombre de la clase que sospecha que se está filtrando en el cuadro de búsqueda. (Aquí es donde el prefijo es útil). Los instrumentos de inicio nuevamente con el botón "Grabar"

  1. La columna viviente debe subir y bajar a medida que asigna objetos. Tenga en cuenta que si no baja tiene una fuga.

Esto está en iOS, el dispositivo es iPad.

Esto es lo que sucede:

  1. Ejecuto la aplicación en el dispositivo o depuro y corro usando Xcode.
  2. Después de 5 minutos, recibo una advertencia de memoria de nivel 1.
  3. Un minuto después recibo una advertencia de memoria de nivel 2.
  4. Un minuto más tarde, la Program received signal: “0”.

Comprobé fugas usando Fugas en instrumentos y no detecté fugas . Sin embargo, según Activity Monitor, mi aplicación inicialmente usa 30 MB y crece en tamaño a más de 100 MB en el tiempo (¡aproximadamente 200 kb por segundo!). Entonces, aparentemente, Leaks no detecta todas las pérdidas de memoria.

Entonces mi pregunta: si Leaks no puede detectarlo, ¿hay algún consejo general para encontrarlos, y hay una mejor herramienta para encontrar estas fugas?


Es preferible si puede hacer uso de herramientas para encontrar fugas, pero si está completamente perplejo, hay otra técnica que yo uso.

Comience comentando casi todo y luego lentamente vuelva a agregar un componente a la vez hasta que la pérdida de memoria vuelva a ocurrir. De esta forma, puede centrarse en la función o bloque de código que está creando el problema.


No siempre es necesario que tenga fugas en el caso que ha mencionado. Es posible que haya utilizado muchos objetos liberados automáticamente en el momento del punto de ejecución que menciona aquí. Puede agregar objetos de gran tamaño a un objeto de colección. Si ese es el caso, use un grupo Autorelease independiente para ese caso, reduzca la huella de memoria de la aplicación.