Моя игра js постоянно выделяет и освобождает память - PullRequest
0 голосов
/ 01 мая 2018

Что-то не так с моей игрой pixi.js. Он выделил 1 МБ в секунду, а через 3 секунды GS выпустил его. И так до бесконечности.

Конечно, я читал это, но кажется, что Chrome Tools не могут обнаружить проблему - когда я записываю временную шкалу распределения - он показывает некоторые редкие пики, которые при выборе - показывают некоторые функции, но также есть постоянные крошечные пики распределения памяти, которые ничего не показывают. Я их выбираю, а в списке функций ничего не вижу!

В моем покадровом коде я оптимизировал все - когда я выключаю pixi - память не двигается. Только когда я делаю пикси рендеринг сцены в каждом кадре - тогда это постоянное распределение / выпуск начинается и никогда не заканчивается. На ПК все нормально, но на мобильном каждые 10 секунд зависает на 5 секунд - играть невозможно.

Кто-нибудь сталкивался с частыми выделениями / GC в своем коде? Если да - как вы его отладили, как вы это исправили?

1 Ответ

0 голосов
/ 01 мая 2018

По моему опыту, Pixi.js имеет всплески GC даже при пустой сцене, вы можете проверить это самостоятельно. Не стесняйтесь, чтобы открыть вопрос GitHub в своем репо. Я полагаю, что у них уже были некоторые обсуждения утечек. Но я не думаю, что сама Pixi должна так сильно влиять, если у вас нет тысяч и тысяч объектов.

Ты уверен, что все сделал? Вам следует злоупотреблять шаблоном пула объектов и предварительными выделениями в вашем коде. Это особенно актуально, когда вам нужно постоянно создавать / удалять объекты (что-то вроде маркеров). Основная информация https://www.html5rocks.com/en/tutorials/speed/static-mem-pools/

Upd: Для отладки Chrome инструменты в значительной степени хорошо. https://developers.google.com/web/tools/chrome-devtools/memory-problems/

...