Atribuciones Xcode generaciones de instrumentos

He estado usando instrumentos en un proyecto ARC (se ejecutan en un dispositivo) para asegurarme de que estoy limpiando cualquier memory abandonada. Para este fin, he estado utilizando la herramienta de generaciones de asignaciones y tomando instantáneas de mi montón para la misma acción 10-20 veces. Lo que estoy confundido es el crecimiento. Algunas veces el crecimiento es 0, y luego el otro, un número de bytes (nunca consistente que va desde unos pocos bytes hasta varios kilobytes) parece acumularse. Pero generalmente hay al less pocas iteraciones donde el crecimiento es 0.

Mi pregunta es: si mi crecimiento es a veces 0, ¿significa eso que mi gestión de la memory es correcta? ¿O todavía tengo problemas que necesito descubrir? Entiendo que puede tomar varios ciclos para que la memory "drene", pero ¿qué pasa con la memory que aún se asigna y permanece incluso después de 10 iteraciones?

Esto parece ser una pregunta más general sobre la interpretación de los instrumentos, así que he omitido cualquier código específico. Además, he encontrado que esto está sucediendo en varios escenarios de instantáneas de montón: jalar para actualizar, ver el controller de vista, etc.

Editar: he incluido una instantánea de la window de mi Instrumentos .

Yo diría que si tiene varias iteraciones de su bucle de acción que dan como resultado 0 bytes asignados y siguen vivos, entonces usted es bueno en la administración de la memory y no tiene pérdidas.

Los aumentos que está viendo (de unos pocos bytes a unos pocos kilobytes) son más probables desde el SO o desde el código Apple de background haciendo cosas para tratar de administrar las tareas que está haciendo. Un ejemplo fácil es que si abres el keyboard por primera vez, Apple asigna memory para que nunca se lance, de modo que la iteración verás una memory "filtrada" que no has creado. Todo lo que hace tiene un código de background que Apple ejecuta y no puede definir qué quiere hacer con la memory. Podría estar cacheando cosas específicas que se hacen a menudo para que la próxima vez se ejecute más rápido. Toda la filosofía de Apple es aplicaciones de ejecución suave para que la experiencia del usuario sea lo mejor que pueda ser. Lo que hace el sistema operativo en segundo plano para que eso ocurra puede ser intermitente y puede causar una memory no liberada.

Compruebe las instantáneas de montón para ver qué objects fueron asignados y no liberados. Si puede rastrear esos objects a su código, entonces corríjalo, si no puede, es probable que sea una asignación de sistema operativo que puede o no puede evitarse. Como dije hace un momento, si obtienes una gran cantidad de aumentos de 0, entonces no me preocuparía por estos incrementos de SO intermitentes.