2017-03-25 6 views
0

私はC#サービスプロジェクトのTCPサーバーです。サービスを開始すると、そのメモリの使用量は40 MBになりますが、時間が経過するとメモリ使用量が倍増します。私はC#がガベージコレクトされていることを知っていますが、アプリケーションには何らかの問題があります。C#:ログファイルのすべての変数とそのメモリ使用量を一覧表示します。

私は自分のアプリケーションにlog4netのを使用していると私は私の着信データを管理するためのデータベースとtcpServerにデータを格納するためにエンティティフレームワークを使用しています。

RAM内のすべてのメモリ変数をログファイルの降順でソートしてリストする方法はありますか?あるいは、リアルタイム分析のような問題をデバッグする良い方法はありますか?

答えて

0

あなたは、出力の列を見るとherehere

を説明するように、MTは、メソッド表の略で、基本的にその型を記述したテーブルへのポインタであるwindbgを

!dumpheap -stat 

で試すことができますオブジェクトの。 Countは、指定された型のヒープに存在するオブジェクトの数です。 TotalSizeは、任意の種類のオブジェクトによって消費されているメモリの量です。最後の列は明らかにオブジェクトの完全に型付けされた名前です。

また、より良い方法でデータを表示するために、WinDBGのコマンドラインバージョンからの出力を分析するオープンソースのC#プロジェクトであるSOSNetを検討してください。メモリにロードされたすべての.Netタイプのリストを "Total Size"で表示することもできます。 enter image description here

多くの場合、スレッドが漏れている可能性があります。すべての接続を受け入れるスレッドは1つだけですか?

そうでなければ、あなたのプロセスのanalyse memory snapshotsを取ることができます。

関連する問題