6GB RAM を搭載した Windows 7 X64 でプロセスを実行しています。このプロセスで 2GB 近く以上をコミットしたい場合に問題が発生します。SetProcessWorkingSetSize() を使用したかったのですが、効果がありません。約 2040 MB でまだアクセス違反が発生し、RAM の 30% 以上が空いています。また、最も奇妙なのは、割り当てられたメモリの量がすべての実行で同じであるという事実です。私の質問は、プロセスにこの値以上を使用するにはどうすればよいですか? このプロセスのために RAM を最大限に活用する必要があります。それをテストするために、簡単なコードを書きました。ご覧のとおり、大きな配列を割り当てようとしているわけではなく、while(1) ループの各反復で 640 バイトしか割り当てず、アクセス違反はちょうど 2040MB 前後で発生します。
コード セグメントは次のとおりです。
class Dummy
{
long double x;
long double y;
long double z;
long double k;
long double l;
long double m;
long double n;
long double p;
};
int main()
{
while(1){new Dummy[10];}
}
タスクマネージャーのスクリーンショットは次のとおりです。