私は ac# サーバー アプリのガベージ コレクションの問題を調査しています。現在、これを行うために PerfView を使用しています。いくつかのデータを収集し、GC Stats の負荷を取得した後、「Trigger Reason」列の 1 つについて少し混乱しています。「AllocLarge」と「AllocSmall」の 2 つの値を取得しています。ヘルプと Google で検索しましたが、これら 2 つの用語の正確な意味がわかりません。
質問する
1301 次
1 に答える
11
.NET GC は、85K を超えるオブジェクト (大きなオブジェクト) を他のオブジェクト (小さなオブジェクト) とは大きく異なる方法で扱います。特に、大きなオブジェクトは「第 2 世代」(最も高価な種類の GC) でのみ収集されます。「AllocLarge」は、ラージ オブジェクトの割り当て中に GC がトリガーされたことを意味します (したがって、Gen 2 GC を引き起こしたに違いありません)。「AllocSmall」は、「通常の」オブジェクトの割り当てに応答して GC が発生したことを意味します。
一般に、寿命の短い大きなオブジェクトを持つのは良くないことに注意してください (これらは高価な GC を強制するため)。「GC Alloc Stats」ビューを見て、疑似フレーム「LargeObject」を探すことで、ラージ オブジェクトを割り当てたすべての場所を確認できます。それをダブルクリックすると (「callers」ビューが表示され、大きなオブジェクトを割り当てている場所が表示されます。
于 2012-11-12T18:30:51.527 に答える