4

プライベートバイトに戸惑う!

現在、ANTS プロファイラーを使用して C# .NET アプリケーションのメモリ使用量を分析しています。以下は、メインフォームが画面に表示された状態で起動後に得られた調査結果です。他の機能は使用されていません。

Gen 0 ヒープ - 5.8MB
Gen 1 ヒープ - 2.5MB
Gen 2 ヒープ -
すべてのヒープで 13.9MB バイト - 17MB
ラージ オブジェクト ヒープ - 0.7MB
プライベート バイト - 130MB
ワーキング セット - 150MB

すべてのヒープのバイトが 17MB しかないのに、なぜこれほど大きなプライベート バイト割り当てがあるのでしょうか? プライベート バイトはシステムによって割り当てられますか、それともプライベート バイトはソフトウェアによって埋められるにつれて拡張されてゼロから始まりますか? つまり、プライベート バイトは、実際には部分的にしか使用されない可能性のあるバブルですか? もしそうなら、何がそのサイズを決定しますか?

4

2 に答える 2

1

Red-Gate から: 「Private Bytes」に関する一般情報

プライベート バイトには、.NET ヒープの空き領域とアンマネージ メモリの使用量が含まれます。

于 2012-07-18T07:29:52.153 に答える
1

プライベート バイトは、他のプロセスと共有できないプロセスのすべての仮想割り当てです (つまり、コードとメモリ マップ ファイルは除外されます)。これには、すべての NT (ネイティブ) ヒープ、マネージド ヒープ、スタック、およびアプリケーション ( VirtualAlocEx ) によって明示的に割り当てられたメモリが含まれます。

!dumpheap -statを使用して、CLR メモリ使用量の詳細な使用状況を取得できます。CLR メモリ リークを参照してください。

于 2012-07-18T07:55:02.993 に答える