1

我正在使用 JavaScript (Node) 编写一个 Lichess 机器人,它使用 Stockfish.js ( https://www.npmjs.com/package/stockfish ) 分析国际象棋位置。由于机器人可以同时玩多个游戏,我认为每个游戏都有自己的 Stockfish 实例是有意义的,一旦游戏结束就应该解除分配。

然而,释放内存一直是个问题。stop即使在发送和quitUCI 命令之后,我也会在每个游戏中获得高达 80MB 的内存泄漏,并且还尝试了类似this.worker = nullor的方法delete this.worker。没有任何效果。

代码片段:

  1. 引擎初始化在构造函数中完成。
constructor() {
  this.worker = stockfish();
  this.worker.onmessage = data => {
    console.log(data);
  };
  this.worker.postMessage("uci");
}
  1. 停止发动机。
stop() {
  this.worker.postMessage("stop");
  this.worker.postMessage("quit");
  setTimeout(() => {
    this.worker = null;
    console.log("Engine stopped");
  }, 1500);
}

setTimeout()在测试时使用this.worker = nulldelete this.worker因为语句似乎在没有延迟时会影响以前的语句。我还在调查这个。

关于泄漏我能做些什么的任何想法?谢谢你。

4

0 回答 0