2012-05-11 8 views
3

私たちはWindowsのメモリアーキテクチャについて話しています。>アプリケーションが要求するメモリサイズを割り当てるアプリケーションマネージャヒープにメモリチャンクを与える仮想メモリマネージャについて話します。.netヒープメモリのアーキテクチャ

http://msdn.microsoft.com/en-us/library/ms810466.aspx

しかし、.NET =中> .NETは、ヒープは、仮想メモリマネージャからメモリ「を求めて」は(私はこのような場合は、ほぼ確信している)、または間にいくつかの層がある管理されていますネット管理されたヒープと仮想メモリマネージャー?

(この質問はGCに接続されていません)

答えて

3

.NETランタイムは、基本的には、マネージヒープのためのメモリマネージャとして機能します。したがって、新しいオブジェクトが作成されるたびにgen0 GCヒープ上のポインタ(コレクションをトリガする可能性があります)またはラージオブジェクトヒープ上にチャックを割り当てます。後者は、フリーリストを使用するという点で、通常のCRTヒープに似ています。

GCヒープ自体は、必要に応じてOSに割り当てられ/解放されるセグメントに格納されます。つまり、管理されたメモリー使用量は、通常、プロセス・レベルですぐには反映されません。

WinDbgで読み込むことができるSOSデバッガエクステンションによって、管理されたヒープがどのように異なるセグメントから構築されているかを検査することができます(VSでもロードできますが、

気になる本が2つあります:CLR via C#Shared Source CLIです。どちらもこれをカバーしています。

+0

+1 SOSについて話す。 PSCOR2とPSCOR4は、ヒープ検査にも適しています。 – GregC

+1

@GregC:そうです。 PSSCORは本質的にSOSソースの支店から構築されているため、多くを共有しています。 –

関連する問題