나는 과도한 양의 메모리를 사용하는 경향이있는 어플리케이션에서 작업하고 있으므로 이것을 줄이고 싶습니다.
나는 이것이 자바 프로그램에서 가능하다는 것을 알고있다.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 ++에서 구현 가능한 방법이 있습니까?
아무도 아이디어가 있니?
미리 감사드립니다.