別のプロセスまたは WinDBG 内部から .NET プロセスでガベージ コレクションをトリガーする方法はありますか?
ネイティブ/マネージド境界を越えて移動するときにコレクションを強制するマネージド デバッグ アシスタントがあり、AQTimeにはこれを行うことを示唆するボタンがあるようですが、その方法に関するドキュメントが見つかりません。
別のプロセスまたは WinDBG 内部から .NET プロセスでガベージ コレクションをトリガーする方法はありますか?
ネイティブ/マネージド境界を越えて移動するときにコレクションを強制するマネージド デバッグ アシスタントがあり、AQTimeにはこれを行うことを示唆するボタンがあるようですが、その方法に関するドキュメントが見つかりません。
ええと... 即時ウィンドウがあります。プロセスにアタッチする余裕がある場合は、即時ウィンドウで手動で GC.Collect を実行できると思います。
より大きな質問: なぜ手動で GC.Collect を誘導したいのですか? これは厄介な習慣であり、より大きな設計上の問題を示しています。
GC.Collectを使用するというJohnCocktoastanの回答は、VisualStudioにある場合に最適なオプションです。
WinDBGで実際に収集を行うための代替手段をまだ見つけることができませんが、「どのくらいのメモリが再利用可能か」という問題に一歩戻ります。(ジョンの回答に対する私のコメントを参照してください)!DumpHeapと!GCRootの組み合わせによるスクリプト( PowerDBG ?)検索を使用して、ルート化されていないハンドルを見つけ、使用されたスペースを合計する(基本的に、 GCはデバッガーを使用して実行します)。しかし、これを考えて以来、私はこれらのバグの1つを持っていなかったので、それを行うためのコードを書き込もうとしませんでした。
リモート処理を介して関数/オブジェクトを公開する場合、それは非常に簡単に実行できます。