2011-07-23 1 views
3

.NETでアプリケーションを作成しました。 64ビット版と32ビット版の同じソフトウェアをコンパイルすると、64ビット実行可能ファイルは小さくなります。32ビット実行可能ファイルが大きいにもかかわらず、32ビットアプリケーションが64ビットバージョンより少ないRAMを使用する理由

ただし、両方を実行すると、64ビットバージョンではより多くのRAMが使用されます。

何かが「フードの下で」起こっていると確信しています、なぜちょうど興味があったのですか? (いずれにせよ心配しない)

ありがとう。

EDIT:C#.NET 4.0が重要です。

+2

私はこの質問をしません。あなたのタイトルは、32ビット*がより多くのメモリを使用していると答えていますが、64ビット*はより多くのメモリを使用しています。明らかにどちらも真実ではない。 –

+1

あなたの質問タイトルと質問内容は互いに矛盾しているようです。 –

+0

私は手足の外に出て、タイトルの文言を更新しました –

答えて

8

32ビットアプリケーションでは、ポインタは32ビットすなわち4バイトですが、64ビットアプリケーションでは64バイト、つまり8バイトです。したがってポインタ(例えば、オブジェクト参照)は、メモリの2倍の量を占める。

また、32ビットのアプリケーションオブジェクトではオブジェクトごとに12バイトのオーバーヘッドがありますが、64個のアプリケーションでは24バイトのオーバーヘッドがあります。もう一度ダブル。

これらの影響は、実行時に認識され、DLLサイズでは認識されません。

+0

32ビット4GB RAMから8GBのRAMを搭載した64ビットにアップグレードする価値はありますか?私は今思うかもしれないほど多量のRAMを用意していないことに気付きました。なぜならすべてがRAMの2倍を消費するからです。だからポイントは何ですか? – gemmo

4

ポインタは64ビットモードで2倍の大きさです。それはRAMの使用法の違いのいくつか(時には多く)を説明することができます。

関連する問題