2011-12-29 16 views
2

.NETで32ビットアプリケーションを開発していますが、これはさまざまな理由で64ビットアプリケーションとしてコンパイルできません。64ビットWindows(メモリ)の32ビットアプリケーションの動作

これらを同時に実行する必要があり、多くのメモリを使用します。私はトンネルのメモリを搭載したWindows 7ボックスをロードしたいので、64ビットバージョンのWindows 7を使用して、それらのボックスに数ギガバイトのRAMを配置することができます。

私の質問はこれです:私のアプリの各インスタンスで使用される最大メモリは約500MBです。 Windows 7 64ビットでは、これらの32ビットアプリケーションは、WindowsのWOW64エミュレーションレイヤーを使用して実行されます(私が想定している)。これらのインスタンスを同時に実行し始めると、それらはすべて2GB未満のRAMで動作するか、Windowsは64ビットWindowsで可能なすべての上位アドレス範囲のメモリを使用してメモリを割り当てますか?この場合、32ビットソフトウェアのアドレス可能メモリの制限はインスタンスごとの制限のみですか?また、すべてのインスタンスがRAMの下位2GBに制限されますか?

答えて

2

仮想アドレス空間にメモリ(物理アドレス空間)を混同しています。 32ビットシステムには4GB以上のメモリを搭載できます。物理アドレス空間を獲得するために64ビットに移行する必要はありません。各プロセスは独自の仮想アドレス空間を取得するため、それぞれに2GBのユーザーモードアドレス空間が割り当てられます。 (または3GBの場合は3GBまたは4GB、/ LARGEADDRESSAWAREの場合はWOW64で動作します)

+1

サーバー版ではなくクライアント版のクライアント版を使用している場合は、64ビットに移動して物理アドレス空間を取得する必要があります –

関連する問題