ホームページ  >  に質問  >  本文

JavaScript 無限ループとヒープ メモリ制限 - 致命的なエラー: ヒープ制限に達しました 割り当てに失敗しました - JavaScript ヒープがメモリ不足です

ループを無期限に実行する必要があるスクリプトを実行しようとしています (特定の条件が満たされるまでですが、これには永遠に時間がかかる可能性があります)。ループ内の操作は非常に単純で、新しい変数の作成、要素の配列へのプッシュ、または新しい呼び出しは行われません。基本的に、少なくとも私の意見では、ループごとに新しいリソースは使用されません。ただし、悪名高いエラーが発生しました:

リーリー

私はループでのメモリ使用量を研究してきました。わかりやすくするために、私の質問は次のように考えることができます。

リーリー

「何もしていない」にもかかわらず、ループごとにヒープ使用量が増加し続けることがわかりました。 ループを再帰関数に変換するという同じことを試してみましたが、同様の結果が得られました。ヒープ メモリ サイズの割り当てを変更することにも慣れていますが、無限に実行する必要があるため、それはこの状況の解決策ではありません。

このようなループを実行するにはどのようなコーディング式を使用すればよいでしょうか?ヒープを増やさずにこれを達成するには何を変更すればよいでしょうか?

ガベージ コレクター についてはある程度知っており、この機能が制限の原因であると推測できますが、その理由はよくわかりません。私がやろうとしていることは、他の多くの人が遭遇するであろう非常に単純なニーズであるように思えますが、Java がそれを無効にしただけだとは信じられません。

ご回答ありがとうございます

P粉773659687P粉773659687205日前392

全員に返信(1)返信します

  • P粉879517403

    P粉8795174032024-03-28 18:59:49

    setInterval または requestAnimationFrame を使用することを強くお勧めします。 JavaScript はシングルスレッドであるため、(非同期関数内であっても) 無限ループが発生し、他のコードの実行が妨げられる可能性があります。

    これで問題が解決することを願っています。

    リーリー

    返事
    0
  • キャンセル返事