プロセスがWindows XPで使用できるシステム全体のメモリ制限を設定する方法はありますか?ほとんどの場合問題なく動作するいくつかの不安定なアプリがありますが、数秒でメモリ全体を消費するバグにぶつかります(または、少なくともそれだけだと思います)。これにより、Windowsが完全に応答しなくなり、作業が失われるため、ハードリセットが発生します。
Linuxで/ etc/limitsのようなことをできるようにしたい-たとえば、M90を設定する(1人のユーザーに割り当てる最大メモリを90%に設定する)。したがって、システムは何があっても残りの10%を取得します。
Windows ジョブオブジェクト を使用します。ジョブはプロセスグループに似ており、メモリ使用量とプロセスの優先度を制限できます。
Microsoftの Application Verifier(AppVerifier) ツールを使用します。
私の場合、使用できなくなったメモリをシミュレートする必要があるため、ツールで次の操作を行いました。
2分後、プログラムは新しいメモリを割り当てることができなくなり、すべてがどのように処理されるかを確認できました。
アプリケーションによっては、言語インタープリターが使用するメモリを制限する方が簡単な場合があります。たとえば、Javaを使用すると、JVMが割り当てられるRAMの量を設定できます。
それ以外の場合は、Windows APIを使用してプロセスごとに1回設定することができます
私が知っているこれを行う方法はありませんが、誰かが良い答えを持っているかどうかを読むのは非常に興味があります。私は自分の会社が構築するアプリの1つにこのようなものを追加することを考えていますが、それを行う良い方法を見つけていません。
私が考えることができる1つのことは(直接ではありませんが)、WindowsのCOM +アプリケーションの合計メモリ使用量を制限できると信じているということです。もちろん、アプリをCOM +で実行するように作成する必要がありますが、私が知っている最も近い方法です。
ワーキングセットの内容は良好です(ジョブオブジェクトもワーキングセットを制御します)が、それは総メモリ使用量ではなく、実際のメモリ使用量(ページイン)のみです。それはあなたが望むもののために働くかもしれませんが、それは知らない限り、割り当てられたメモリの合計を制限しません。