1

今日から、「% Time in GC」 (ガベージ コレクターでの時間の割合) パフォーマンス タイマーが 100% を安定して維持していることがわかりました。夜になってもオンラインの訪問者はいませんでした。

次にApp_Offline.htm、ルートに配置しました。通常、これによりすべての ASP.NET アクティビティが停止します。しかし、何らかの奇妙な理由で、「% Time in GC」は 34% に低下しましたが、安定したままでした。

ここで明らかなことを見ていますか?他のいくつかの GC 関連のパフォーマンス カウンターもまだ機能しているようですが、わずかです。

編集:「今日だけ」と書きましたが、実際には「今日から」です。それ以来、それは消えていません。

4

2 に答える 2

3

Jrista は彼の答えで正しい方向を示しましたが、この動作の実際の理由はかなり異なることが判明しました。

% Time in GC」カウンターはリアルタイムカウンターではありません。代わりに、最後の GC が発生したときに測定された最後の値が表示されます。で Web アプリケーションを閉じるとApp_Offline.htm、GC が実行され、一定の割合が使用されます。その後、CLR は完全に非アクティブになるため (目的は App_Offline です)、それ以上のガベージ コレクションは発生せず、パーセンテージは変わりません。したがって、ASP.NET CLR アクティビティがゼロの場合でも、直線になります。

このカウンターの説明をここにコピーしました。参照用にコピーしました (また、ばかげた質問をする前に、カウンターの説明を読むように注意してください)。

% Time in GC は、最後の GC サイクル以降のガベージ コレクション (GC) の実行に費やされた経過時間の割合です。通常、このカウンターは、ガベージ コレクターがアプリケーションに代わってメモリを収集して圧縮するために行った作業のインジケーターです。このカウンターはすべての GC の最後にのみ更新され、カウンター値は最後に観測された値を反映します。平均ではありません。

于 2009-12-02T02:10:26.670 に答える
2

アプリケーションがほとんどの時間作業を実行していない場合(たとえば、1%の時間は1日の個々の瞬間の実際の作業ですが、1日中は.0000001%のようになります)、それはそれを意味しません、作業中はGC作業ですか?Webアプリケーションによって1日で実行される作業の.0000001%しかない場合、1日で実行される作業全体の100%(すべての目的と目的)がGCによって実行されることは確かに論理的です。GCは、実行中の作業に関係なく、また他に実行中の作業がない場合は定期的に実行されます...

それとも私は質問を誤解していますか?

于 2009-12-02T00:17:06.047 に答える