O Memory Profiler é un novo paquete para Unity 2018.3 ou superior que permite analizar o uso de memoria dun proxecto para atopar fugas de memoria e fragmentación. As perdas de memoria pódense producir cando se asigna memoria pero nunca se reparte para a súa reutilización despois de que a memoria xa non sexa necesaria. Neste tutorial, aprenderás a usar o perfilador de memoria para comprobar se hai perdas de memoria.
O perfilador de memoria
Co perfilador de memoria pode analizar o uso de memoria dun proxecto para atopar fugas e fragmentación. As perdas de memoria poden ocorrer cando se asigna memoria pero non se libera despois de que xa non se necesita. O rendemento do programa degrádase cando se esgota a memoria, o que finalmente leva a que o programa (e posiblemente incluso o dispositivo host) falla. Cando a memoria se asigna en moitos bloques pequenos e non en bloques contiguos máis pequenos, chámase fragmentación da memoria. Como resultado, as pequenas áreas de memoria non asignadas entre os bloques asignados xa non están dispoñibles para o seu uso.
Instalación do perfilador de memoria
O Memory Profiler funciona co Unity Editor, así como coas versións de desenvolvemento e está dispoñible no Paquete Manager como paquete de previsualización.
Como instalar o perfilador de memoria:
1. No Unity Editor, seleccione Xestor de paquetes na lista despregable Window.
2. Faga clic en Avanzado e seleccione Mostrar paquetes de vista previa.
3. Busque o perfilador de memoria e faga clic en Instalar na esquina inferior dereita da xanela do Xestor de paquetes.
4. Despois da instalación, pode acceder ao Memory Profiler seleccionando "Análise"> "Memory Profiler" na lista despregable "Xanela".


Grava unha instantánea de memoria
O perfilador de almacenamento pode dirixirse a unha compilación de desenvolvemento en execución no ordenador local ou asignarlle unha dirección IP específica para un ordenador en rede.
1. Antes de botar un volcado, cómpre seleccionar un destino. Por defecto, o destino é o editor de Unity.
2. Para seleccionar un novo destino, faga clic no menú despregable na esquina superior esquerda do perfilador de memoria.

Faga clic no botón Capturar para capturar o perfil de almacenamento actual do destino seleccionado. Teña en conta que a captura en si ocupa algo de memoria. Nalgúns casos, isto pode provocar que o obxectivo se conxele ou se bloquee cando se esgota a memoria.


Importe unha instantánea da memoria capturada
1. Fai clic no botón Importar na parte superior da xanela do perfilador de memoria.
2. Use o menú despregable Formato de ficheiro na esquina inferior dereita do cadro de diálogo Importar ficheiro de instantánea para seleccionar o formato da instantánea de almacenamento que quere importar. As opcións inclúen ficheiros .snap capturados co Memory Profiler e ficheiros .memsnap * creados co Bitbucket Memory Profiler.

3. Desprácese ata a súa instantánea e selecciónea. Fai clic no botón Abrir.
4. A primeira vez que faga unha instantánea de memoria, crearase un cartafol chamado MemoryCaptures (ao mesmo nivel que o cartafol Activos e non neste cartafol). Tamén pode colocar instantáneas de memoria neste cartafol para facelos accesibles.
5. Ver o volcado de memoria
Despois de capturar ou importar (incluído o movemento da instantánea ao cartafol MemoryCaptures), a instantánea aparecerá na columna esquerda da xanela do perfilador de memoria. Faga clic en Abrir para ver o perfil de almacenamento.

A visión estándar e máis intuitiva é a estrutura da árbore (Figura 06). Esta vista mostra a cantidade de memoria empregada por cada tipo de elemento proporcionalmente. No noso exemplo, 126 shaders ocupan un total de 80 MB de RAM.

Para ver unha categoría con máis detalle, faga clic nela para ver todos os elementos e as súas respectivas pegadas de memoria. A información máis detallada móstrase nunha táboa debaixo da estrutura da árbore. Faga clic nos títulos para ordenar a táboa por valor ou grupo.

A vista de táboa, que se atopa debaixo da estrutura da árbore e da estrutura de memoria, contén información máis detallada sobre o uso de memoria de elementos individuais.
Unha vista máis directa, o Mapa da memoria, mostra o deseño da memoria en diferentes cores que representan diferentes tipos de memoria. Isto pode ser útil para localizar a fragmentación da memoria.

Traballando co perfilador de memoria
Atopar unha fuga de memoria
Como atopar unha fuga de memoria:
1. Inicia o reprodutor, configúreo como o obxectivo do perfil de gardar e toma unha instantánea dunha escena baleira.
2. Cargue a escena que desexa probar. Reproduce parte da escena para cargar os recursos necesarios.
3. Descargue a escena escribindo Resources.UnloadUnusedAssets () ou cargando / creando unha escena baleira dúas veces
4. Toma outra instantánea e sae do modo de reprodución.
5. Cargue a primeira e a segunda captura de pantalla no Banco de traballo e faga clic en Dif. Unity calcula a diferenza entre as dúas capturas de pantalla. Isto pode levar uns segundos dependendo do tamaño da instantánea.
6. Na vista de táboa, faga clic no título da columna Dif e seleccione Grupo.
7. As entradas agrúpanse: igual, en ambas instantáneas, desde a primeira instantánea eliminada e nova. As novas entradas son posibles fugas de memoria.
O perfilador de memoria é unha boa forma de controlar o uso de memoria do seu proxecto.
Non só podes ver o que está a usar máis espazo de almacenamento, senón tamén como o teu proxecto está a usar ou abusar do espazo de almacenamento. As fugas de memoria e a fragmentación son dous dos problemas máis comúns que afectan ao proxecto
e o perfilador de memoria solucionalo.
Publicado orixinalmente o 2020/03/16 ás 16:46:00.
