Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Використання профайлера ObjectDB
Починаючи з Godot 4.6, у нижній панелі налагоджувача з'явилася нова вкладка ObjectDB Profiler. Цей профайлер дозволяє робити знімки поточного стану ObjectDB, тобто бази даних, що містить усі класи, похідні від class_object, що наразі розміщені в пам'яті. Це корисно для виявлення витоків пам'яті та розуміння використання пам'яті вашим проектом.
Крім того, цей інструмент здатний візуалізувати відмінності між двома знімками. Це можна використовувати для виявлення покращень або регресій у використанні пам'яті після внесення змін до вашого проєкту. Зменшення використання пам'яті може призвести до кращої продуктивності, навіть у випадках, коли пам'ять не є вузьким місцем. Зменшуючи використання пам'яті, ви можете виконувати менше розподілів, що може бути дорогою операцією, особливо якщо їх виконувати у великих обсягах під час гри.
Дивись також
Див. Коли і як уникати використання вузлів для всього для отримання інформації про використання легших альтернатив вузлам, які можуть допомогти зменшити використання пам'яті у вашому проєкті.
Попередження
Профайлер ObjectDB не відстежує кожен біт пам'яті, що використовується рушієм або зовнішніми бібліотеками. Класи рідного рушія, які не доступні API сценаріїв, не відображатимуться у знімках.
Якщо вам потрібен доступ до цієї інформації, розгляньте можливість використання зовнішніх інструментів профілювання пам'яті.
Використання
Відкрийте вкладку ObjectDB Profiler у нижній панелі . Ви потрапите на сторінку зведення, де ще не зроблено жодних знімків.
Зведення профайлера ObjectDB без зроблених знімків
Запустіть проєкт, а потім дійдіть до точки, де ви хочете зробити знімок (наприклад, після завантаження рівня). Натисніть , щоб зробити знімок у поточний момент часу. Якщо кнопка неактивна, переконайтеся, що проєкт запущено.
Зведення профайлера ObjectDB з одним зробленим знімком
Ви можете зробити кілька знімків під час одного запуску проєкту. Також ви можете клацнути правою кнопкою миші на знімку у списку знімків, щоб перейменувати його, відобразити в менеджері файлів або видалити.
Порада
Гарною ідеєю є перейменувати знімки після їх створення, щоб дати їм описові назви (наприклад, before_optimization, after_optimization). Незалежно від назви, дата створення знімка залишається збереженою у самому файлі знімків.
Файли знімків мають розширення .odb_snapshot та знаходяться в user://objectdb_snapshots/ (див. деталі Шляхи до даних). Їх можна безпечно копіювати на різні пристрої, оскільки вони не залежать від платформи.
Перегляд відмінностей між знімками
Після створення щонайменше двох знімків стає доступним випадаюче меню . Тут ви можете вибрати інший знімок для порівняння поточного вибраного знімка.
Випадаюче меню «Різниця проти» у лівому нижньому куті профайлера ObjectDB
На сторінці зведення буде показано відмінності між двома знімками:
Два знімки, що порівнюються на вкладці «Підсумок»
Це також стосується кожної іншої вкладки в профайлері ObjectDB, яка відображатиме відмінності між двома знімками в додаткових стовпцях.
Класи
На вкладці «Класи» ви можете переглянути, скільки екземплярів кожного класу було створено на момент створення знімка:
Один знімок, що переглядається на вкладці «Заняття»
У режимі порівняння буде показано кількість екземплярів класу для поточного вибраного знімка (стовпець A) та знімка, з яким виконується порівняння (стовпець B). Також буде показано різницю в кількості екземплярів у стовпці «Дельта».
Два знімки, що порівнюються на вкладці «Класи». Тут стовпець A – це second_session, стовпець B – first_session
Ви можете клацнути на класі у списку праворуч, щоб переглянути його в інспекторі.
Вибраний екземпляр класу переглядається в інспекторі
Порада
Попередній перегляд екземплярів в інспекторі також доступний на інших вкладках (Вузли, Об'єкти та Підраховані посилання).
Об'єкти
Вкладка «Об’єкти» схожа, але відрізняється способом представлення даних. Тут кожен екземпляр перелічено лінійно, а не груповано за класом. Вибравши об’єкт, ви побачите список інших об’єктів, на які він посилається, праворуч (), а також список об’єктів, на які на нього посилаються ().
Це дозволяє переглядати об'єкти або "зверху вниз" (перегляд об'єктів, на які посилається певний об'єкт), або "знизу вгору" (перегляд об'єктів, на які посилається певний об'єкт).
Вкладка «Об’єкти» використовується для перегляду об’єктів «зверху вниз»
На зображенні вище, клацання об'єкта default_font у списку переключить вигляд на перспективу цього об'єкта. На цей об'єкт також посилається багато інших об'єктів, що фактично перемикає на перспективу "знизу вгору".
Вкладка «Об’єкти» використовується для перегляду об’єктів «знизу вгору»
Вузли
Далі, на вкладці «Вузли» відображається дерево сцени на момент створення знімка.
Вкладка «Вузли» використовується для перегляду дерева сцени
Ця вкладка особливо цікава у режимі перегляду різниці, оскільки вона дозволяє візуально відображати різницю між двома знімками. Якщо не позначено, ви можете бачити відмінності поруч.
Окремий перегляд різниці на вкладці Вузли
Коли позначено , ви можете побачити відмінності, об'єднані в одне дерево, з доданими вузлами, виділеними зеленим кольором, а видаленими вузлами, виділеними червоним.
Комбінований перегляд різниці на вкладці Вузли
Крім того, ви можете переглянути список вузлів-сиріт (вузлів, які не приєднані до кореня дерева сцени) в кінці деревоподібного подання. Ви можете переглянути його легше, згорнувши кореневий вузол, оскільки вони перелічені поза головним деревом сцени.
Сиротські вузли в кінці дерева вузлів у профайлері ObjectDB
RefCounted
Остання вкладка — це вкладка «Підрахунок посилань». Ця вкладка схожа на вкладку «Об'єкти», але вона відображає кількість посилань на класи, похідні від class_refcounted, безпосередньо в таблиці. Таблиця має чотири стовпці:
Власні посилання: Кількість посилань на об'єкт у власному движку.
Посилання на ObjectDB: Кількість посилань на об'єкт у ObjectDB.
Загальна кількість посилань: Сума власних посилань та посилань ObjectDB.
Цикли ObjectDB: Кількість виявлених циклічних посилань.
У режимі перегляду різниці знімок B завжди відображається вище за знімок A, якщо екземпляр RefCounted існує в обох знімках.
У списку праворуч відображається детальна інформація про вибраний екземпляр, зокрема список посилань та інформацію про те, чи є вони дублікатами.
Вкладка RefCounted використовується для перегляду екземплярів RefCounted
Примітка
Вкладка RefCounted не відображає об'єкти, що походять безпосередньо від class_object, оскільки вони не використовують підрахунок посилань.