複数を作成したいのでFileStreams
、それらを開いたままにしておく必要があります。I/O操作はありません。メモリ消費量はどうなりますか?このようなストリームを多数作成すると、システムのパフォーマンスに影響しますか?
1 に答える
0
つまり、ファイルストリームは管理されていないリソースであるため、開いたままにしておくことはお勧めできません。
.NET Frameworkアーキテクチャでは、コードで正しく管理されていない場合、管理されていないすべてのリソースがメモリの大きなリークを引き起こします。
「スコープから外したくないのですが、ガベージコレクターは最終的にDisposeを呼び出してストリームを強制終了します。しかし、ストリームを開いたままにしておきたいのです。」
ガベージコレクターは、Finalize
メソッドではなく、メソッド(デストラクタ)を呼び出しますDispose
。ファイナライザーは、基になるストリームを破棄しない呼び出しDispose(false)
を行います。基になるストリームを直接使用する必要がある場合は、goをスコープ外のままにしておくと問題ありません。必要に応じて、基になるストリームを手動で破棄するようにしてください。StreamReader
于 2012-12-16T14:46:11.730 に答える