2012-03-20 3 views
0

私はいつも、(RAM/HARD DISK /その他の(?))ヒープはどこにありますか?JIT(C#)によって作成されたヒープはどこですか?

メモリ内のコードで2 GBのファイルをロードすると、どこに行くのですか?

また、この「スタック」は物理的な場所にありますか? RAM ?

実際の実装チームの誰かがこれを知らせることができますか?ほとんどの人が言うのはRAMだからです。しかし、私は本当に本当に両方とどこを知っていたかったのですか? こちらにお答えするのが難しい場合は、良い記事をご紹介ください。

+0

miplementationチームの必要はありません。ヒープとスタックは、初心者の低レベルのプログラマが知っておく必要がある標準的なものです - それは低レベルのアセンブラスタイルのプログラミングで作業する初心者です。 – TomTom

答えて

0

.NET exeを実行すると、CLRをホストするMSCorEE.dllが読み込まれます。 CLRはプロセスメモリにスタックとヒープを作成します。それが必要な場合、プロセスのためにさらに多くのメモリを要求します。

これらはRAMに格納されますが、オペレーティングシステムがそれを抽象化します(スワップファイルなど)。

+0

このプロセスメモリはどこにありますか? RAM内の – Dhananjay

+0

..... – Aliostad

+0

メモリにあります。他にどこにいると思いますか?仮想マネージャを使用しても、OSはハードディスクをスワップファイルに移動することができます。 – TomTom

0

2GB .NETプロセスのファイルメモリをロードすると、フレームワークが約32ビットシステムで約1.2GBを保持するため、32ビットシステムでクラッシュします。

あなたが話している思い出は、にあります。.NET managed assembliesです。他の人のために、低RAMメモリ条件でOS自体によって行われた可能メモリスワッピング、原因、ディスク空間上 partialy終えることができました。

2

私は、次の記事を読んで推薦:

http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx

.NETヒープは、アプリケーションのユーザアドレス空間のほんの一部です。したがって、現在(またはそれに割り当てられているすべてのオブジェクトが)RAMにあるかディスク上にあるかは、システム全体の現在のメモリ圧とVMMの判断によって決まります。また、ヒープの一部は、同時にRAM上やディスク上の他の部分に置くことができます。

2

What and where are the stack-and-heap

この質問とその答えは非常に非常に詳細にそれを説明しています。これは、スタックとヒープの両方をカバーします。どのようにその使用、違いなどもそれは素晴らしいグラフィックスを持っています!

関連する問題