2013-08-09 6 views
5

私はプログラムのスピードを最大限に高め(リアルタイムで結果を得るために)、ハードドライブからのデータの不必要な読み込みを避けるよう努めています。できるだけ多くのRAMを私のプログラムに使用する方法は?

プログラムは膨大な量の画像を処理することになっており、できるだけ多くの処理済みデータをRAMで処理したいと考えています。しかし、私が見つけたのは、mallocは、私が8GBのRAM(Windows 7 64-bit)を使用していても、2GB以上を割り当てることができないということです。

できるだけ多くのRAMをプログラムで使用するにはどうすればよいですか?

+0

64ビットLinuxに切り替えると、2GB以上(おそらく7または8GBに近い)の 'malloc'が可能になります。 –

+3

'malloc'は連続したメモリブロックを割り当てます。それは単にあなたのために十分な大きさのブロックがないことかもしれません。また、8GBの物理RAMを持っていても、すべてのアプリケーションがそのメモリを共有します。すべてのメモリを連続的に読み書きしないと、その一部がディスクにスワップアウトされる可能性があります。 –

+3

プログラムは64ビットモードで64ビット実行可能ファイルにコンパイルされていますか? –

答えて

7

私はmmap(2)の窓に相当これは、あなたがより多くのメモリを使用できるようにする必要がありVirtualAlloc

であると考えています。 OSがあなたのメモリをページアウトすることを決めるかもしれないことに注意してください。 VirtualLockでRAMにロックすることができます。しかし、ロック可能なメモリの量は限られているかもしれません。

また、コメントに記載されているように、プログラムを64ビットとしてコンパイルしてください。

+0

_ "ロック可能なメモリの量は制限されているかもしれません" _はい、それだけではありませんが_それは非常に真剣に制限されています。私が正しく覚えていれば、あなたはあなたのワーキングセットのサイズを最初に調整しない限り、デフォルトは16 MiBです。 – Damon

関連する問題