Этап 3: «Слишком много активных контекстов WebGL. Самый старый контекст будет утерян».предупреждение и утечка памяти - PullRequest
0 голосов
/ 05 декабря 2018

Я тестирую фазер на предмет утечек памяти, создавая и уничтожая множество экземпляров, используя интервал: 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.

...