クライアントから報告されたメモリ不足の例外についてクラッシュ ダンプ ファイルを検査した結果、!DumpHeap -stat
575MB のメモリが 45,000 個の「フリー」タイプのオブジェクトによって占有されていることが示されました。サイズ。
最初に問題を探したのは、ラージ オブジェクト ヒープ (LOH) と固定されたオブジェクトでした。空き領域を含む大きなオブジェクト ヒープは 70MB しかないため、これは問題ではなく、実行すると!gchandles
次のように表示されました。
GC Handle Statistics:
Strong Handles: 155
Pinned Handles: 265
Async Pinned Handles: 8
Ref Count Handles: 163
Weak Long Handles: 0
Weak Short Handles: 0
Other Handles: 0
これは、空きオブジェクトの数 (45,000) に比べて非常に少ない数のハンドル (約 600) です。私には、これにより、ピン留めによって引き起こされる空きブロックが除外されます。
また、空きブロック自体も調べて、サイズが一貫しているかどうかを確認しましたが、調べたところ、サイズは大きく異なり、5MB 弱からわずか 12 バイト程度までありました。
どんな助けでも大歓迎です!断片化があるため途方に暮れていますが、ラージ オブジェクト ヒープ (LOH) と固定ハンドルの 2 つの場所が原因であるという兆候は見られません。