0

C#.Net 3.5 で開発されたソケット サーバーがあります。クライアントが切断して接続するたびに、サーバーのメモリ使用量が増加しています。有効な資格情報が提供されなかった場合、サーバーはクライアントを切断します。

クライアントが無効な資格情報で接続を試みると、より多くのメモリが予約され、決して解放されないように見えます。クライアントは毎秒 1 回再接続を試みています。以下は、切断を処理するコードです。このコードは、クライアントが切断されたとき、および読み取り操作と書き込み操作でエラーが発生したときに呼び出されます。

この問題をデバッグ/修正する方法を教えてもらえますか?

4

2 に答える 2

0

メモリ使用量をどのように測定していますか?

マシンにメモリの負荷がない場合、GCは収集を頻繁に実行しません。そのため、メモリが廃棄された場合でも、タスクマネージャに表示されるメモリ使用量が増加する可能性があります。

いくつかの呼び出しを追加GC.Collectして、GCを強制的に実行してみることができます。これにより、実際にメモリリークが発生しているかどうかがわかります。(本番ビルドにコレクトコールを残さないでください)。

MSDNの記事:.NETアプリケーションのメモリ使用量の監査

于 2012-04-30T09:47:56.703 に答える
0

state.workSocket と state を null に設定していて、破棄する機会がない可能性があります。

于 2012-04-27T18:37:11.663 に答える