私は、ffmpegとffplayを生成し、入力ffmpegからフレームを取り出し、それらを処理して別のffmpegとffplayに出力するNodeJSスクリプトを持っています。これは1080pを1秒間に約3フレーム処理して処理しますが、なんらかの理由で出力に書き込まれた後にバッファを保持します。これは、クラスタワーカーを使用するかどうかにかかわらず発生しますが、そうした場合でもワーカーは多くのメモリを使い始めます。NodeJSバッファはガベージコレクトされていません
答えて
世代別ガベージコレクタを使用します。これは、ヒープを複数の領域で分割し、それらを管理するための特別なアルゴリズムを使用していることを意味します。ほとんどの割り当てである短命オブジェクトの「保育」と、存続期間の長いオブジェクトの1つ以上の領域保育園。
ナーサリは実行オブジェクトの数に比例するアルゴリズムを使用します。つまり、ガベージの代償を払いませんが、メモリを2倍にする必要があります(コレクションではメモリの半分を放棄し、他のオブジェクトにライブオブジェクト)。
旧エリアでは、プログラムが実行されている間に、ルート(グローバル参照、スタックなど)から開始してライブオブジェクトをインクリメンタルにマークするコンパイルマーク&スウィープまたはマーク&を使用して、 (暗い魔法を使って)起こっている。最終的には、大きな休止を生じさせないように、マークされていないすべてのオブジェクトをインクリメンタルに解放する(すべての空きメモリが現在必要ではないことを正しく観察する - 解放されている限り)スペースが満たされているよりも速く立ち上がります)。
これはこれからです。quora answerです。
V8のメモリ使用量がmax-old-space-size
に達すると、Node.jsガベージコレクションが実行されることがあります。これはV8のヒープメモリの制限です(デフォルトは1.4GB程度です)。私たちがあなたを助けることができるようにするには、コードの一部を投稿する必要があります。また、実行しているNode.jsのバージョンを知るのに役立ちます。
スクリプトを実行して、max-old-space-size
を実際に低い数値に設定して、GCが実際に実行されるようにすることができます。それが実行されるとコードは問題なく、問題はNode.js GC最適化によって引き起こされます。
- 1. 大きなメモリチャンクはガベージコレクトされていません
- 2. JavaFXノードオブジェクトはガベージコレクトされていません
- 3. WebオーディオMediaElementSourceノードがガベージコレクトされていません
- 4. Intptrハンドルがガベージコレクトされていない
- 5. これらの変数はガベージコレクトされていますか?
- 6. NodeJS POSTの結果は定義されていません
- 7. Picasso Targetはガベージコレクトされました
- 8. NodeJSでAngular2アプリケーションがすべてロードされていません
- 9. CLIネイティブオブジェクトがgen2にスタックされ、ガベージコレクトされていない
- 10. これはガベージコレクトされている理由
- 11. IntelliJ IDEA - nodejsプラグイン - passport.initialize()解決されていません
- 12. Nodejsが実行されていません
- 13. NodeJS- ReferenceError:wagnerが定義されていません
- 14. モジュールがNodeJSで定義されていません
- 15. Nodejsのresが定義されていませんinside
- 16. ログがJWTのnodejsに記録されていません
- 17. Azure「blobServiceが定義されていません」NodeJSのエラー
- 18. NodeJS/Express/Typescriptアプリケーションでルートが実行されていません
- 19. NodeJSメソッドが許可されていません
- 20. Luaではstdin、stdout、stderrがバッファリングされているかバッファされていませんか?
- 21. バッファされた/バッファされていないチャンネル
- 22. このスコープ/クロージャはいつJavaScriptでガベージコレクトされますか?
- 23. プロミスはnodejsの手続き型コードで定義されていません
- 24. Pace-ProgressライブラリのAngular2、Error:バッファが定義されていません
- 25. Javaの入力バッファで文字が永続化されていませんか?
- 26. ソケットを介してバッファを送信したNodeJSは、バッファではないことをコンソールに伝えます。
- 27. jPlayerフラッシュフォールバックはバッファしませんか?
- 28. NodeJS、WebStorm、Jasmine:ReferenceError:デバッグ時にdescribeが定義されていません
- 29. Azureでホストされているnodejs web apiを起動できません
- 30. Nodejs - POST要求の応答が定義されていません
ありがとうございます。この場合、データを消しているよりも速くデータを消費していました。それで、それは記憶に積み重なった。 –
つまり、私はffmpeg.stdoutを読み込んでいましたが、出力ffmpegが私が与えていたデータを消費している間に、必要なときに正しく一時停止しませんでした。 –
私は、あなたがそれを理解してうれしいと思う。多くのメモリが使用されるまでNode.js GCが動作しないという問題を抱えている人たちのインターネット上のブログ記事はたくさんありますが、同じ問題があるかもしれないと思っています... – mkhanoyan