我正在使用 JavaScript (Node) 编写一个 Lichess 机器人,它使用 Stockfish.js ( https://www.npmjs.com/package/stockfish ) 分析国际象棋位置。由于机器人可以同时玩多个游戏,我认为每个游戏都有自己的 Stockfish 实例是有意义的,一旦游戏结束就应该解除分配。
然而,释放内存一直是个问题。stop
即使在发送和quit
UCI 命令之后,我也会在每个游戏中获得高达 80MB 的内存泄漏,并且还尝试了类似this.worker = null
or的方法delete this.worker
。没有任何效果。
代码片段:
- 引擎初始化在构造函数中完成。
constructor() {
this.worker = stockfish();
this.worker.onmessage = data => {
console.log(data);
};
this.worker.postMessage("uci");
}
- 停止发动机。
stop() {
this.worker.postMessage("stop");
this.worker.postMessage("quit");
setTimeout(() => {
this.worker = null;
console.log("Engine stopped");
}, 1500);
}
我setTimeout()
在测试时使用this.worker = null
或delete this.worker
因为语句似乎在没有延迟时会影响以前的语句。我还在调查这个。
关于泄漏我能做些什么的任何想法?谢谢你。