저는 Delphi 2007을 사용하므로 32 비트의 사용 가능한 메모리 제한이 있습니다.프로세스의 사용 가능한 메모리를 얻으십시오
function MemoryUsed: Int64;
var
PMC: _PROCESS_MEMORY_COUNTERS_EX;
begin
Win32Check(GetProcessMemoryInfo(GetCurrentProcess, @PMC, SizeOf(PMC)));
Result := PMC.PrivateBytes;
end;
:
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} // Allows usage of more than 2GB memory
이 내가 프로세스의 현재 메모리 사용을 얻기 위해 사용하는 방법은 다음 IMAGE_FILE_LARGE_ADDRESS_AWARE
PE 플래그를 사용
, 3 기가 바이트 제한 대신이 2GB가 있어야한다
이제 프로세스에 사용할 수있는 총 메모리 양을 얻는 방법을 원합니다. 약 3GB 여야합니다. 하지만 저는 하드 코딩을 원하지 않습니다. 앞으로는 새로운 델파이와 64 비트로 옮길 것입니다.
어떤 Win32 API 함수를 사용해야합니까?
사용 가능한 메모리 - 컴퓨터 사용 가능한 메모리 - 아마도 8GB RAM이 설치되어있을 수 있습니다. 더 많은 작업이 필요한 경우 OS가 메모리를 디스크로 스왑을 시작합니다.
처리 가능 메모리 - 실행 파일 및 Windows의 제한 사항. 이제 대부분의 Windows는 64 비트이므로 문제는 아닙니다. 그러나 실행 파일이 IMAGE_FILE_LARGE_ADDRESS_AWARE
으로 32 비트로 컴파일 된 경우 한도는 3GB 여야합니다. 맞습니까? 실행 파일이 64 비트 일 때, 64GB가 훨씬 더 큽니다 (그러나 설치된 RAM이 적 으면 스와핑이 발생할 수 있습니다 ...).
제 질문은 프로세스의 사용 가능한 메모리를 어떻게 얻을 수 있습니까?
사용 가능한 메모리를 정의하십시오. 프로세스는 64 비트 시스템에서 전체 4GB 주소 공간을 사용할 수 있습니다. 현재 예약되지 않은 공간을 모두 할당 할 수 있습니다. 어쨌든 정보로 무엇을 할 것입니까? –
질문을 명확하게하려고합니다. –
원하는 주소 공간입니다. 그것은 2, 3 또는 4 중 하나입니다. 3 일 가능성은 낮습니다. 요즘에는/3GB 스위치로 부팅 한 많은 32 비트 시스템을 찾을 수 없습니다. –