2013-07-29 53 views
5

実行時にConcurrent GCが有効になっているかどうかを確認する簡単な関数呼び出しはありますか?私たちは異種の環境を持っており、どのシステムを変更する必要があるかを識別するためにどのモードが使用されているかを記録する必要があります。同時実行GCが.NETで実行されているかどうかを検出する方法

私はexe.configを調査して手動でチェックできることを認識しています。ハッキングを行わずにこの情報を公開する場所に座っているプロパティがあるかどうか疑問に思っていました。

+0

ガベージコレクション通知http://msdn.microsoft.com/en-us/library/cc713687.aspx – Rohit

+0

コールバックが受信されないのは、GCが並行しているかどうかを測定するにはかなり不正確です... – Spence

+0

これは構成ファイルの一部です。このリンクを参照してください任意のhttp://msdn.microsoft.com/en-us/library/yhwwzef8.aspx –

答えて

4

悲しいことに、焼き尽くされた方法がないように見えます。それがあれば、私はここにそれが見えると思うでしょう:System.Runtime.GCSettings.

並行ガベージコレクションを(デフォルトとして)残しておくのが正当な理由があるのでない限り。

一般的に、これはSQL ServerやIISなど、CLRをホストしている管理されていないアプリケーションです。

exe.configのgcConcurrentをプログラムによって変更するには、アプリケーションが適していますか?そうでない場合は、あなたが言ったように、設定から値を読み取ることは、よりハックな方法(IMHO)であると思われます。

決して少なくし、私はあなたがETW to detect garbage collection ETW events研究および.NET 4で始まるのビットを使用することができなかった:Windowsの(ETW)のトレースを

イベント プロファイリングやデバッグのサポートを補足するトレースシステムであります.NET Frameworkによって提供されます。 .NET Framework 4以降ではgarbage collection ETW events は、 統計的な観点から管理されたヒープを分析するための有益な情報を取得します。オブジェクトの生成が収集されている

  • たとえば、ガベージコレクションが発生しようとしているときに発生 あるGCStart_V1イベントは、 以下の情報を提供します。
  • ガベージコレクションをトリガーした原因。
  • ガベージコレクションのタイプ(同時かどうか)
+1

徹底的な答えに感謝します。メモリリークハンティング:(同時にメモリリークプロファイラをGCと同時に接続することはできませんので、選択的に試行して接続する必要があります。 – Spence

5

LatencyMode.Batchの値を持つ場合、同時GCは無効になっています。

+0

thats私が見た限りでは誰も見たことがありません – Spence

関連する問題