.NETアプリケーション内でマネージヒープにアクセスすることは可能ですか?そこに現在割り当てられているオブジェクトを列挙しますか?.NETアプリケーションからマネージヒープの内容をプログラムで表示できますか?
私はそれを可能にするさまざまなツールがあることを知っていますが、私は自動テストでそれを使用できるように、私はむしろコードからこれを自分で行いたいと思います。フォーム。
.NETアプリケーション内でマネージヒープにアクセスすることは可能ですか?そこに現在割り当てられているオブジェクトを列挙しますか?.NETアプリケーションからマネージヒープの内容をプログラムで表示できますか?
私はそれを可能にするさまざまなツールがあることを知っていますが、私は自動テストでそれを使用できるように、私はむしろコードからこれを自分で行いたいと思います。フォーム。
http://sourceforge.net/projects/profilesharp/には、ソースコードが入手可能なプロファイラがあります。
あなたは、この情報を表示するには、CLRプロファイラを使用することができます。
私は知っているが、それは私が必要とするものではない。私は自分のC#アプリケーションでこれをやりたいのですが、いくつかの外部対話型ツールではできません。ですから、基本的には、CLR Profilerのしくみ(自分のやり方)を知りたいのです。 – Timo
Profiler(Profiling APIを使用)は、CLRによってロードされ、管理されたメソッドのenter/leave/tail呼び出しで呼び出されるさまざまなオプションがあるという意味で、コード(と他のものもたくさんあります)。それらはアンマネージコードで書かれています。
AFAIKこの情報をCLRを監視するプロファイラ/デバッガを呼び出さずに内部的に取得する方法はありません。 また、コードの実行が終了した後(多くのDispose()コール、ファイナライズなど)になってからだけ、この種の情報が得られるとは限りません。
今度はClrMD Nugetパッケージを使用できます。
Nugetパッケージは実際にはMicrosoft.Diagnostics.Runtime
と呼ばれます。ヒープ内のオブジェクトや、CLRランタイムのその他のプロパティを表示することができます。
あなたの解決策は何でも、投稿してください。間違いなく他の人にも役立つでしょう。 – JoshJordan