2017-06-21 11 views
0

A行とB行に何らかのポイントを設定してプロセスを実行し、どのメモリが割り当てられ、解放されなかったか(ガベージコレクションとしてマークされなかったか)を確認する方法はありますか?私はC#、VS 2015 professionalを使用しています。プロファイラは実行時にどのオブジェクトが割り当てられたかを報告するようですが、まだどのオブジェクトが保持されているかはわかりません。.NETアプリケーションをプロファイリングして、ある時点でガベージコレクションの対象になっていないオブジェクトを確認する方法はありますか?

タスクマネージャでは、すべてのメモリが解放されるとは限りません。どのオブジェクトがメモリを保持しているかを知るプロファイラが必要です。ポイントAとポイントBを設定できない場合でも、プロセスが終了した時点で、どのオブジェクトが割り当て解除されていないか(またはガベージコレクションのマークが付けられていないか)少なくとも確認する方法はありますか?

私はVS 2015のプロファイリング機能、または無料/有料のプロファイラーを使用しています。

答えて

-1

は、私が(時間に焦点を当てて、共通のプロファイラと違って)あなたはCLRプロファイラまたは類似のメモリプロファイリングツールを探していると思う

リンクが古いとのCodePlexの今後の近くには、おそらく移行されるとしているが、それはありますあなたの目的のための素晴らしいツールです。

https://msdn.microsoft.com/en-us/library/ff650691.aspx

https://clrprofiler.codeplex.com/

https://dzone.com/articles/pinpointing-memory-leaks-clr

0

メモリプロファイラによって取得したスナップショット内のすべてのオブジェクトは、メモリ内に保持されており、この時点で収集することができません。実行のいくつかの時点でスナップショットを取得すると、JetBrains dotMemoryとそのProfiling API(他のプロファイラーにも同様の機能があるかもしれませんが、わかりません)を使用するとどうなりますか? 次に、スナップショット1とスナップショット2の間でどのオブジェクトが割り当てられているか、または収集されていないかを確認できます。

関連する問題