私は、過剰な量のメモリを使用する傾向があるアプリケーションに取り組んでいるので、これを減らしたいと思います。
私はこれを追加することによって、Javaプログラムのために可能であることを知っていますMaximum heap size
Javaプログラムの起動中のパラメータ(例:java.exe ... -Xmx4g
しかし、ここで私はWindows-10システム上の実行ファイルを扱っているので、これは当てはまりません。
この記事のタイトルはこのURLこれはこれを行う方法を述べていますが、それはまた述べています:
最大ワーキングセットプロセスに割り当てられたワーキングセットの最大量を示します。しかしながら、この番号はWindowsによって無視されますリソース管理アプリケーションによってプロセスに強い制限が設定されていない限り。
その間、私は次のコード行が私のプログラムのメモリ使用量に全く影響を及ぼさないことを確認することができます。
HANDLE h_jobObject = CreateJobObject(NULL, L"Jobobject");
if (!AssignProcessToJobObject(h_jobObject, OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId())))
{
throw "COULD NOT ASSIGN SELF TO JOB OBJECT!:";
}
JOBOBJECT_EXTENDED_LIMIT_INFORMATION tagJobBase = { 0 };
tagJobBase.BasicLimitInformation.MaximumWorkingSetSize = 1; // far too small, just to see what happens
BOOL bSuc = SetInformationJobObject(h_jobObject, JobObjectExtendedLimitInformation, (LPVOID)&tagJobBase, sizeof(tagJobBase));
=>bSuc
ですtrue
、または私が期待すべき何か他にありますか?
これに加えて、前述のツール(Hyper-Vのようなリソース管理アプリケーション)は、私のWindows-10システムでは動作しないようです。
これの隣に、この主題についての別の投稿があるようです「C ++でプロセスのWorkingSetを強制的に1GBにする方法はありますか?」しかし、ここでも結果は否定的なようです。
よく理解してください。私はC ++で作業しています。このURL該当しません。
だから今、私は簡単な質問で立ち往生している:Windows 10で実行されている、現在のプロセスのメモリ使用量を制限するためのC + +で実装可能な方法はありますか?
誰か考えがありますか?
前もって感謝します