我正在通过使用间隔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上下文过多。最早的上下文将丢失。”
不确定我的代码是否有错误,或者我可能没有正确销毁移相器实例。