2012-02-09 6 views
0

私は非常にメモリを消費するC#デスクトップアプリケーションを持っています。私の質問は次のとおりです。コンピュータのRAMを1つのアプリケーションより向上させているか、同じアプリケーションで複数のアプリケーションをサポートするだけです時間?アプリケーションで使用できるメモリの制限

私のオペレーティングシステムは、Windows 7(64ビット)です。

私が知っていることは、プロセスで使用できるメモリがスタック(スレッドごと)とヒープであることです。スタックはコンピュータのRAMから独立しており、一般的にはそのサイズを決定するオペレーティングシステムです。しかしヒープははるかに大きく、大きなオブジェクトをヒープ上に配置することをお勧めします(C#のnewはヒープからメモリを取ります)。

もう一度質問します。コンピュータのRAMを拡張すると、各プロセスで利用できるヒープが拡張されますか?そして、各プロセスのヒープがありますか、それとも単なるヒープですか?

答えて

2

まず、「プロセスのアドレス空間」やプロセスや仮想メモリの基本レベルでの動作など、オペレーティングシステムの概念を少し分けてみると、本当に役立つと思います。 これは良いと思われます - > [1]:http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory

各プロセスには独自のプロセスアドレス空間があり、それによって独自のヒープがあります。ヒープは、動的メモリ割り当てに対応する「仮想アドレス空間」の一部です。お使いのOSに対応できるアドレス可能なメモリの範囲には、 が依存しています。例えば、32ビットシステムでは、最大アドレス可能範囲は4GBを超えることはできません。

RAMをさらに追加すると、スラッシングのようなものを減らすことによって(夜間ではなく1日ではなく)何らかの違いを生み出すことができます。

+0

+1素晴らしい記事です。どうもありがとうございました。そうです、私たちのオペレーティングシステムのコースは重要なコンセプトの多くを見逃していたようです... – OmarOthman

関連する問題