1

Stockfish.js ( https://www.npmjs.com/package/stockfish )を使用してチェスの位置を分析する JavaScript (Node) を使用して Lichess ボットを作成しています。ボットは複数のゲームを同時にプレイできるため、各ゲームに Stockfish の独自のインスタンスを用意し、ゲームが終了したら割り当てを解除するのが理にかなっていると考えました。

ただし、メモリの割り当て解除には問題がありました。stopおよびUCI コマンドを送信した後でも、ゲームごとに最大 80MB のメモリ リークが発生し、またはquitのようなアプローチも試みます。何も機能しません。this.worker = nulldelete 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 = nullまたはdelete this.workerステートメントが遅延していないときに前のステートメントに影響を与えるように見えるために使用します。私はまだこれを調査しています。

リークに関して私にできることはありますか?ありがとうございました。

4

0 に答える 0