4

所有しているコンソールアプリケーションのメモリ使用量を削減しようとしています。何時間も実行することになっていますが、メモリ使用量は1秒ごとに徐々に増加しているようです。複数のスレッドを使用し、さまざまなことを行いますが、Console.WriteLineを頻繁に呼び出すと、メモリスパイクが発生する可能性があることをどこかで読みました。

アプリケーションは常にコンソールに書き込んでいるので、メモリ使用量はこれが原因である可能性があると思いました。残念ながら、出力を監視ウィンドウにリダイレクトしているため、コンソールを簡単にクリアできません。一時的にオフにしましたが、メモリはまだ増え続けており、対処する必要のあることが他にもあることがわかります。

メモリリークを探し出す前に、何千ものConsole.WriteLineがあるとメモリリークが発生する可能性があるかどうか、またはリダイレクトされた出力バッファによってすでに適切に処理されているかどうかを誰かが確認/確認できるかどうか疑問に思いました。私は検索を試みましたが、これについてはあまり見つかりませんでした。

4

1 に答える 1

4

に何千もの呼び出しをConsole.WriteLine行っても、メモリリークは発生しません。毎分数百行をコンソールに書き込む長時間実行プログラム(現在6か月間稼働しています)があり、そのメモリ使用量は一定に保たれています。

一度に数千行を頻繁に書き込むことは、一時的な文字列が原因でメモリスパイクを引き起こす可能性がありますが、それらは次にGCが実行されるときに収集されますただし、が安定してロードConsole.WriteLineされると、収集されていない文字列のメモリが安定してロードされます。それは増え続けることはありません。

于 2012-07-24T21:50:15.757 に答える