Stockfish.js泄漏内存

问题描述

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

但是,分配内存存在问题。即使发送了stopquit UCI命令,并且尝试了诸如this.worker = nulldelete this.worker之类的方法,我仍然发现每个游戏的内存泄漏高达80MB。什么都行不通。

代码段:

  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 = null时使用delete this.worker,因为这些语句在不延迟的情况下似乎会影响先前的语句。我还在对此进行调查。

有什么想法可以解决泄漏吗?谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)