La asignación y las fugas de los instrumentos iOS bloquean la aplicación Xamarin

Actualmente estoy desarrollando una gran aplicación con Xamarin. Estoy tratando de arreglar algunas filtraciones que suceden, pero cada vez que uso los instrumentos de Fugas o Asignación esas herramientas hacen que la aplicación se congele y la grabación deja de tomar cualquier cosa.

La asignación deja de registrar la imagen

La asignación deja de registrar imagen2

Mi aplicación está en modo de debugging como se indica en este enlace:
Xcode Instruments deja de grabar cuando la aplicación iPad deja la pantalla de bienvenida

Ningún locking particular en los loggings y he intentado Habilitar la detección de NSZombie sin éxito.

Dec 15 21:00:15 SU04 xxxxxxxxx[351] <Warning>: Using ThreadCount: 2 Dec 15 21:00:23 SU04 backboardd[28] <Warning>: CoreAnimation: updates defernetworking for too long Dec 15 21:00:23 SU04 backboardd[28] <Warning>: CoreAnimation: timed out fence 2ecaf Dec 15 21:00:23 SU04 SpringBoard[33] <Warning>: CoreAnimation: failed to receive fence reply: 10004003 

Al inicio, la aplicación debe cargar una gran cantidad de memory (parte de xamarin, parte de diferentes SDK) y sospecho que esas herramientas no pueden manejarlo. Estamos dando vuelta 180Mo y 90Mo a 120Mo se cargan al inicio, pero las herramientas hacen que la aplicación se congele antes de ser completamente funcional.

Nadie de mi equipo puede hacer un perfil utilizando esas herramientas para que venga (imho) desde las herramientas o la aplicación y no desde la configuration de mi computadora. Probé en el simulador 7.x y 8.x, ipads 7.x y 8.x con el mismo resultado.

¿Alguna idea de lo que puedo tratar de resolver esto? Gracias 🙂

Respuesta corta: perfil usando la configuration de lanzamiento

Respuesta larga:

La configuration de Depuración de Xamarin.iOS es muy diferente a la de Xcode. El enlace que diste fue para Xcode y no se aplica bien a Xamarin.iOS.

Xamarin.iOS utiliza un soft-debugger que requiere código (generado) adicional y memory para la debugging que lo haría una compilation de versión.

Eso a menudo le dará malos numbers, por ejemplo, tarda más time del que debería, y puede encontrarse optimizando el código incorrecto (p. Ej., Puede que no sea la parte del código más lenta en el momento del lanzamiento). Lo mismo vale para el uso de memory (y los instrumentos también tienen su propio requisito).

Para el time o la memory obtendrá los mejores resultados (datos) con una opción de compilation más cercana a la que planea lanzar.

¿Has intentado grabar en "modo diferido"? La grabación en vivo tendrá un impacto en la CPU y la memory y ralentizará su aplicación. Al usar "Modo diferido" demoras el análisis hasta el final de la grabación. Espero que ayude.