Unity 6.3
0 онлайн 96 гостей 3 в системе
Вход
Оптимизация Шаг 9 из 208

Отслеживание распределения мусора

Unity имеет следующие инструменты для отслеживания выделения памяти:

  • Модуль CPU Использование Profiler Модуль: Предоставляет подробную информацию о распределении мусора на кадр.
  • Модуль памяти Profiler: Предоставляет высокоуровневую информацию об использовании памяти кадр за кадром.
  • Пакет Memory Profiler: Отдельный пакет Unity, который предоставляет подробную информацию об использовании памяти в определенные моменты времени во время работы приложения.

Отслеживание распределений с помощью модуля использования CPU

Чтобы отслеживать выделения сбора мусора с помощью модуля CPU Использование Profiler, выполните следующие действия:

  1. Откройте окно Profiler (Окно > Анализ > Profiler).
  2. Соберите некоторые данные о производительности.
  3. Выберите кадр в модуле CPU Использование Profiler.
  4. В области сведений о модуле откройте представление Hierarchyи осмотрите столбец GC.Alloc.

В столбце GC.Alloc отображается количество байт, которые Unity выделил на управляемой куче для выбранного кадра и потока.

Выделения могут происходить на всех потоках, поэтому вы можете использовать выпадающее меню выбора потока, чтобы проверить другие потоки, помимо главного потока. Вы также можете использовать Timeline вид и следить за образцами GC.Alloc, которые окрашены ярким пурпурным цветом.

Совет: Используйте режим Стек вызовов, чтобы включить полный трасс стека вызовов для образцов GC.Alloc. Стек вызовов дает вам точные детали о том, где сборщик мусора сделал распределение без необходимости использовать режим Глубокого профилирования, который может повлиять на производительность.

Отслеживание выделений с помощью модуля памяти

Вы можете использовать модуль Память Profiler для отслеживания выделения памяти для сбора мусора, но он предоставляет только общее представление на высоком уровне о том, где Unity выделил память. Для подробной информации об использовании памяти в вашем приложении, используйте пакет Память Profiler.

Чтобы отслеживать выделения памяти для сбора мусора с помощью модуля Память Profiler, выполните следующие действия:

  1. Откройте окно Profiler (Окно > Анализ > Profiler).
  2. Соберите некоторые данные о производительности.
  3. Выберите кадр в модуле Memory Profiler.
  4. В области сведений о модуле проверьте статистику GC, выделенную в кадре.

Статистика Managed Heap отображает количество памяти, которой управлял сборщик мусора, и включает память, которую Unity мог выделить и повторно использовать в последующих кадрах. Это означает, что сумма выборок GC.Alloc по всем кадрам не дает общего количества управляемой памяти, увеличившейся за это время.

Статистика GC выделенная в кадре отображает количество памяти, которое было выделено в этом кадре. Это количество может быть выше, чем количество памяти, отображаемое модулем CPU Usage в столбце GC.Alloc представления Hierarchy. Это происходит потому, что статистика GC.Alloc включает выделения, сделанные по всем потокам, а также в образцах только для редактораили как часть EditorLoop. Представление Hierarchy отображает только один поток за раз и скрывает выделения, сделанные в образцах только для редактора по умолчанию, и сворачивает код, выполняемый как часть EditorLoop, если только профилер не нацелен на редактор, а не на режим воспроизведения.

Важно: Чтобы получить наиболее точную информацию, профилируйте ваше приложение на сборке разработки на целевой платформе или устройстве, для которого вы хотите компилировать. Unity Editor работает иначе, чем сборка, и это влияет на данные профилирования. Например, метод GetComponent всегда выделяет память, когда он выполняется в Редакторе, но не в компилированном проекте.

Дополнительные ресурсы