Я тестирую фазер на предмет утечек памяти, создавая и уничтожая множество экземпляров, используя интервал: setInterval(this.createCharts, 1000);
Конфигурация игры:
const PHASER_CONFIG: GameConfig = {
type: Phaser.WEBGL,
width: 1200,
height: 400,
parent: "chart-app",
backgroundColor: "#232327"
};
Сам метод создания / уничтожения экземпляров:
// createCharts: if charts are already initialized - destroy all, otherwise - create (allChart is holding active instances)
public createCharts() {
if (this.allCharts.length > 0) {
let i = this.allCharts.length;
while (i--) {
this.allCharts[i].destroy(true);
this.allCharts[i] = null;
this.allCharts.splice(i, 1);
}
} else {
for (let i = 0; i < 10; i++) {
let chart = new Phaser.Game(PHASER_CONFIG);
this.allCharts.push(chart);
}
}
}
Объем памяти приложения постоянно растет, и я вижу предупреждения консоли для каждого нового Phaser.Game - «ПРЕДУПРЕЖДЕНИЕ: слишком много активных контекстов WebGL. Самый старый контекст будет потерян».
Не уверен, что в моем коде есть ошибка, или, может быть, я неправильно уничтожаю экземпляры Phaser.