2011-07-25 2 views
6

私は非常に大きなオブジェクトを作成するプログラムを実行しています。このプロセスに2GB以上のメモリを割り当てると大きなメリットがあります。前もって感謝します。Windowsのプロセスに2GBを超えるメモリを割り当てるにはどうしたらいいですか?

+0

それは確かにあなたのユーザーのために貧しいアプリケーションにつながる2GBのメモリ+チャンクを割り当て、書くことがあなたのプログラムを簡単にするかもしれないが。 – JaredPar

+0

どのようにして2GBオブジェクトを作成しますか? – Gabe

+0

@gabe配列が最も明白な例です –

答えて

3

32ビットWindowsでは仮想メモリの2GB制限を参照しているようです。 32ビットシステムではこの制限を回避することはできません。

+0

boot.iniの設定で/ 3GBのスイッチを使用し、 "大容量のアドレス空間を認識する"というプロセスをマークすることはできますが、32ビットOS上のメモリに2GBをロードしようとすると簡単ではありませんタスクは、ネイティブコードまたはマネージコードのいずれかになります。 –

+2

@alexeiマシンの管理者は/ 3GBを実行できますが、アプリケーションは –

6

2GBを超える単一のオブジェクト(または配列)を割り当てることはできませんが、これはCLRの制限です。オブジェクトを分割して分割する必要があります。

+0

私は3GBオブジェクトを6個の0.5GBオブジェクトに分割したとしますが、2GBプロセス制限を超えていないでしょうか?再度、感謝します。 – abw333

+0

そして、TBH、このサイズのオブジェクトを管理しようとしているなら、いくつか考え直す必要があります。 –

+0

@Schroedingers Catいくつかのアルゴリズムには巨大なオブジェクトを割り当てたいと思うのは妥当です。 –

5

.NET Framework 4.5では、64ビットプラットフォームで2GBを超える配列を作成できます。この機能はデフォルトではオンになっていないため、gcAllowVeryLargeObjects要素を使用して設定ファイル経由で有効にする必要があります。

http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx

+0

できません。私は本当にVS2012に切り替える必要はありません。 –

関連する問題