Утечка памяти в Phaser .js.как правильно выпускать объекты в приложении Phaser Canvas? - PullRequest
0 голосов
/ 12 мая 2018

У нас есть игра под управлением Phaser .JS. Хотя при использовании браузеров кажется, что память продолжает расти.

Как правильно чистить объекты?

1 Ответ

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

Я сгущу свой ответ, чтобы сделать его пригодным для использования.

Phaser 2 утверждает, что большинство объектов может быть просто разыменовано путем присвоения нулям их ссылок, и это должно вызвать сборку мусора.

Вместо этого другим, таким как TilemapLayers, явно понадобятся конкретные их деструкторы для вызова.

Другие, такие как Частица, могут быть уничтожены (например, Particle.kill()).

Однако, как вы выяснили, автоматический сборщик мусора не всегда хорош, и особенно если вы длительное время держите браузер открытым, он теряет память.

Таким образом, вы должны убивать, останавливать, удалять и уничтожать все, даже необязательные объекты . Даже если вы не найдете конкретного деструктора, большинство объектов наследуются от PIXI.DisplayObject и поэтому реализуют .RemoveChild и варианты. Особенно родитель Phaser.Stage

иди сюда: https://phaser.io/learn/chains

Поиск в этих: destroy removeAll .stage.removeremove со всеми его префиксами и суффиксами, включая removeChild и варианты) stop kill.

Если вы не нашли конкретного деструктора, запомните наследование PIXI.DisplayObject и removeChild / ren.

Также не забывайте вызывать Stage.removeStageReference() при выходе.

Надеюсь, это поможет

...