1

とにかく、ダンプファイルから異なる世代に対して実行されたガベージコレクションの数に関する情報を取得する方法はありますか? いくつかの psscor4 コマンドを実行しようとすると、次のようになります。

0:003> !GCUsage
The garbage collector data structures are not in a valid state for traversal.
It is either in the "plan phase," where objects are being moved around, or
we are at the initialization or shutdown of the gc heap. Commands related to 
displaying, finding or traversing objects as well as gc heap segments may not 
work properly. !dumpheap and !verifyheap may incorrectly complain of heap 
consistency errors.
Error: Requesting GC Heap data
0:003> !CLRUsage
The garbage collector data structures are not in a valid state for traversal.
It is either in the "plan phase," where objects are being moved around, or
we are at the initialization or shutdown of the gc heap. Commands related to 
displaying, finding or traversing objects as well as gc heap segments may not 
work properly. !dumpheap and !verifyheap may incorrectly complain of heap 
consistency errors.
Error: Requesting GC Heap data

eehpeap から出力を取得できますが、探しているものが得られません。

0:003> !EEHeap -gc
Number of GC Heaps: 1
generation 0 starts at 0x0000000002c81030
generation 1 starts at 0x0000000002c81018
generation 2 starts at 0x0000000002c81000
ephemeral segment allocation context: none
 segment     begin allocated  size
0000000002c80000  0000000002c81000  0000000002c87fe8  0x6fe8(28648)
Large object heap starts at 0x0000000012c81000
 segment     begin allocated  size
0000000012c80000  0000000012c81000  0000000012c9e358  0x1d358(119640)
Total Size:              Size: 0x24340 (148288) bytes.
------------------------------
GC Heap Size:            Size: 0x24340 (148288) bytes.
4

1 に答える 1

1

ダンプ

パフォーマンス モニターでガベージ コレクションの数を確認できます。ただし、パフォーマンス カウンターの仕組みから、この情報はダンプ ファイルでは利用できず、ライブ デバッグ中にはおそらく利用できないと思います。

考えてみてくださいDebug.WriteLine(): テキストがデバッグ出力に書き込まれると、それはなくなります。その時点でDebugViewを実行していなかった場合、情報は失われます。それは良いことです。そうしないと、メモリ リークのように見えます。

パフォーマンス カウンター (私が理解しているように) も同様の方法で動作します。他の人 (パフォーマンス モニター) が記録されるように、さまざまな "ping" が送信されます。誰もそうしなければ、すべての情報を含む ping が失われます。

ライブデバッグ

既に述べたように、パフォーマンス モニターを試すことができます。WinDbg を好む場合は、使用sxe clrnしてガベージ コレクションの発生を確認できます。

PSSCOR

あなたが言及したコマンドは、ガベージ コレクション カウントに関する情報を表示しません。

0:016> !gcusage
Number of GC Heaps: 1
------------------------------
GC Heap Size          0x36d498(3,593,368)
Total Commit Size  0000000000384000 (3 MB)
Total Reserved Size  0000000017c7c000 (380 MB)

0:016> !clrusage
Number of GC Heaps: 1
------------------------------
GC Heap Size          0x36d498(3,593,368)
Total Commit Size  0000000000384000 (3 MB)
Total Reserved Size  0000000017c7c000 (380 MB)

注:このマシンには同じ .NET 4.5 の問題があるため、ここでは PSSCOR2 を使用しています。しかし、PSSCOR4 の出力も似ていると思います。

于 2014-09-22T20:40:02.827 に答える