Todo lo que necesita saber sobre Memory Profiler 1.0.0

El nuevo Memory Profiler -versión 1.0.0- aporta mejoras a la suite de creación de perfiles que ofrecen una visión más completa del uso de la memoria y facilitan y agilizan la optimización del rendimiento o la detección de problemas de memoria.
En el equipo del perfilador estamos muy contentos de anunciar que, a partir de septiembre de 2022, el paquete Memory Profiler pasó de Experimental a Verificado y ahora es accesible para todo el mundo mediante el Tech Stream de Unity 2022.2.
Optimizar la memoria es crucial para las aplicaciones que se ejecutan en dispositivos con capacidades limitadas, a fin de evitar que se queden sin memoria. Además, si tiene previsto realizar envíos a varios dispositivos, es posible que tenga que ajustar el espacio de memoria para sacar el máximo partido de cada plataforma.
El Memory Profiler es una herramienta que te ayuda con estos retos permitiéndote tomar una instantánea de tu juego y revisar su uso de memoria en un momento específico.
Al tomar una "instantánea" de tu juego, puedes ver qué está ocupando la mayor parte de su memoria o identificar los problemas que pueden hacer que las aplicaciones se bloqueen.
Nota: Aunque las funciones completas de Memory Profiler y el seguimiento de la memoria sólo están disponibles para 2022.2 en adelante, puedes aprovechar la nueva interfaz de usuario (UI) para inspeccionar capturas más antiguas abriendo Memory Profiler en un proyecto 2022+ vacío e importando instantáneas antiguas.
Memory Profiler se lanzó originalmente como un paquete experimental hace un par de años, pero esta versión incluye una importante revisión de la interfaz de usuario y la experiencia de usuario (UX) para que sea más rápido y fácil de usar.
El paquete experimental original fue utilizado por algunos de los primeros usuarios, y ayudó en muchos casos a identificar problemas de memoria. Sin embargo, en su primera versión era difícil de manejar, lento y requería conocimientos especializados.
Cuando nos pusimos a trabajar en una nueva versión del paquete, teníamos en mente las siguientes intenciones:
- Simplifique los flujos de trabajo más comunes e importantes, de modo que pueda identificar y solucionar los problemas con mayor rapidez.
- Proporcionar información más completa y fiable para facilitar la comparación del uso de memoria entre dispositivos (utilizando también perfiladores específicos de cada plataforma).
- Mostrar la información de forma más accesible, para que los usuarios sin conocimientos profundos de memoria puedan optimizar eficazmente las aplicaciones.
Para lograrlo, hemos colaborado estrechamente con los primeros usuarios del paquete experimental a fin de conocer sus necesidades y puntos débiles, y hemos repetido varias veces el diseño para asegurarnos de que ofrece la mejor experiencia de usuario posible.
Gracias a sus aportaciones, nuestro equipo pudo racionalizar y simplificar enormemente la herramienta, reduciendo la jerga y facilitando la inspección de objetos, detalles y dependencias directamente en la herramienta.
Memory Profiler consta de tres secciones principales que muestran su nueva y mejorada interfaz de usuario, que vamos a desglosar aquí:
- Lista de instantáneas
- Una sección Principal, que a su vez se divide en tres vistas de flujo de trabajo (Resumen, Objetos de unidad y Toda la memoria).
- Detalles de la selección
La lista de instantáneas es el área donde puedes capturar y ver las instantáneas que has tomado en tu juego, así como información de alto nivel sobre el uso de memoria y la fecha de captura. Aquí, puede capturar instantáneas con el botón "Capturar" de la barra de herramientas o -si no hay ninguna instantánea disponible- a través del botón de instantáneas de la sección Principal.
También puede ver si el uso de memoria está cambiando a través de instantáneas y puede tener una idea de si el rendimiento del proyecto está mejorando o no.
Por último, también puede utilizar la lista de instantáneas para seleccionar si desea ver instantáneas individuales o instantáneas comparadas (más información al respecto más adelante).

Esta es el área central de Memory Profiler, dividida en tres vistas de flujo de trabajo: Resumen, Objetos de la Unidad y Toda la Memoria. Se puede acceder a cada una de estas vistas desde las pestañas de la parte superior de la sección Principal.
La vista Resumen es la vista por defecto que se abre al cargar o capturar una instantánea. Proporciona información sobre cuánta memoria está utilizando, cuánta es "residente" en el dispositivo y cuánta está comprometida pero no se encuentra actualmente en el dispositivo. También proporciona información sobre cómo se distribuye la memoria entre las categorías, para simplificar la elección de por dónde empezar la investigación.
Por último, la vista Resumen proporciona puntos de entrada para un análisis más detallado, como los "Objetos principales de la unidad en memoria" o el "Desglose de la memoria gestionada".

La vista Objetos de Unity es donde probablemente pasará la mayor parte del tiempo. Enumera los principales tipos de objetos cargados en memoria, como texturas, shaders, fuentes, etc. Normalmente, aquí es donde puedes identificar objetos que son demasiado grandes, que no necesitan estar ahí porque se han cargado por error, o que se mantuvieron en memoria por alguna referencia colgante.

La vista Toda la memoria permite ver toda la memoria, dividida por categorías - Nativa, Gestionada, Gráficos o Ejecutables. Puedes ver los datos capturados por el Memory Profiler e investigar aspectos más específicos para ver qué está componiendo la memoria de tu proyecto.

Detalles de la selección ofrece más información sobre los elementos seleccionados en la sección Principal, incluidas descripciones de las distintas categorías de memoria y posibles referencias o detalles de los objetos seleccionados.
Esta sección ofrece más información para ayudarle a entender lo que está viendo, y hace más fácil determinar por qué está en la memoria. Además, si tiene el proyecto abierto en el Editor, tendrá la posibilidad de hacer "ping" a los objetos e inspeccionar los activos directamente en la ventana Escena o Proyecto.

Cada una de las vistas descritas anteriormente está disponible para inspeccionar instantáneas individuales o para compararlas.
Si quieres comparar una instantánea, puedes seleccionar "Comparar" en la lista de instantáneas y, a continuación, seleccionar una segunda instantánea de la lista. Al estar en la pestaña Comparar de la lista de instantáneas, todas las vistas pasarán automáticamente al modo Comparar.
En el modo Comparar, la vista Resumen proporciona el desglose de memoria de las dos capturas, una al lado de la otra, para que pueda ver las principales diferencias en el uso de memoria entre las instantáneas (que se denominarán "A" y "B").

En las vistas Objetos de unidad y Toda la memoria, hay una nueva interfaz de usuario específica que permite ver cómo han cambiado de tamaño las distintas categorías de memoria o la cantidad de objetos que contienen.
Si selecciona una categoría en la tabla superior, podrá inspeccionar las diferencias individuales de las instantáneas A y B en las tablas inferiores.

Si quieres volver a inspeccionar una sola instantánea, puedes volver a seleccionar "Individual" en la lista de instantáneas. La segunda instantánea permanecerá cargada de forma latente para que pueda cambiar rápidamente entre las dos, según sea necesario.
En los próximos meses, esperamos proporcionarle más recursos e información sobre cómo puede optimizar eficazmente la memoria. Manténgase en sintonía para más entradas de blog que cubren cómo identificar problemas comunes en la memoria, así como una inmersión profunda en cómo funciona la memoria en Unity.
Para más recursos generales sobre cómo optimizar el rendimiento de las aplicaciones, recomendamos lo siguiente:
- Memoria en el manual de Unity
- La guía definitiva para crear perfiles de juegos Unitye-book
- Optimice el rendimiento de sus juegos de consola y PCLibro electrónico
- Optimice el rendimiento de sus juegos para móviles Libro electrónico
Este rediseño del Memory Profiler integra las aportaciones de muchos de los primeros usuarios de la versión experimental de este paquete. Aunque esta versión aporta importantes mejoras tanto en la fiabilidad como en la facilidad de uso de esta herramienta, nuestro trabajo dista mucho de estar terminado.
También estamos trabajando para comprender mejor los flujos de trabajo relacionados con la reducción de la fragmentación, de modo que podamos ayudarle en este aspecto en el futuro. Al mismo tiempo, estamos recopilando comentarios sobre cuestiones de usabilidad y UX que siguen abiertas y necesitan mejoras.
Si tiene algún comentario o sugerencia, le invitamos a compartir sus ideas a través de nuestra página de hoja de ruta, donde puede votar por las funciones existentes en curso o sugerir otras nuevas. También puede hacer preguntas en los foros.
Supervisamos constantemente ambos canales y esperamos trabajar juntos para seguir mejorando el rendimiento y las herramientas de Unity.
Instale u obtenga más información sobre el paquete Memory Profiler 1.0.0.
