개발 정보/델파이

[Delphi] 델파이 윈도우10 메모리 사용량 관련 함수

RoRoBong 2021. 6. 10. 10:13
728x90

안녕하세요

로로봉입니다 : )

델파이를 이용해 메모리 사용량에 대한 정보를 구해보도록 하겠습니다.

우선 메모리 Usage에 대해 관련 함수를 사용하기 위해 아래와 같이 uses절에 psAPI를 추가해주어야 합니다.

uses
  psAPI;

psAPI 파일에서는 현재 프로세스에서 사용중인 메모리 사용량을 조회할 수 있습니다. 또한 전체 메모리 관련 정보도 얻을 수 있습니다.

현재 메모리 사용량은 아래와 같이 구할 수 있습니다.

function CurrentMemoryUsage: Cardinal;
var
  PMCnt : TProcessMemoryCounters;
begin
  PMCnt.cb := SizeOf(pmc);
  if GetProcessMemoryInfo(GetCurrentProcess, @PMCnt, SizeOf(PMCnt)) then
    result := PMCnt.WorkingSetSize
  else
    RaiseLastOSError;
end;

- 현재 프로세스 메모리 사용량 가져오기 : GetProcessMemoryInfo

- 현재 프로세스 핸들 가져오기 : GetCurrentProcess


 

 

다음으로는 시스템 전체 메로리의 상태를 가져와보도록 하겠습니다.

procedure
var
  Buffer : _MEMORYSTATUS;
begin
  GlobalMemoryStatus(Buffer);
 
  Buffer.dwMemoryLoad;
end;

- 시스템 메모리 상태 가져오기 : GlobalMemoryStatus

_MEMORYSTATUS 구조체로 정보를 넘겨 받으며 해당 구조체의 각 변수에는 아래와 같은 정보가 넘어옵니다.

DwLength DWORD : 이 구조의 길이
- GlobalMemoryStatus 함수가 조정되기 전에 sizeof () 함수로 얻은 MEMORYSTATUS 구조체의
  크기이며 함수가 구조체 버전을 감지하는 데 사용됩니다.

DwMemoryLoad DWORD : 사용 된 메모리 비율
- 현재 시스템 메모리 사용량을 나타 내기 위해 0에서 100 사이의 값을 반환합니다.

DwTotalPhys DWORD : 총 물리적 메모리
- 총 실제 메모리 크기 (바이트)를 반환합니다.

DwAvailPhys DWORD : 사용 가능한 실제 메모리
- 사용 가능한 실제 메모리 크기를 바이트 (바이트)로 반환합니다.

DwTotalPageFile DWORD : 스왑 파일의 총 크기
- 페이지 파일에 저장할 수있는 바이트 수를 표시합니다.
  이 값은 디스크에있는 페이지 파일의 실제 물리적 크기를 나타내지 않습니다.

DwAvailPageFile DWORD : 스왑 파일의 여유 부분 크기
- 사용 가능한 페이지 파일의 크기를 바이트 단위로 반환합니다.

DwTotalVirtual DWORD : 사용자가 사용할 수있는 주소 공간
- 호출 프로세스의 사용자 모드 부분에서 사용 가능한 모든 가상 주소 공간을 바이트 단위로
  반환합니다.

DwAvailVirtual DWORD : 현재 사용 가능한 주소 공간
- 호출 프로세스의 사용자 모드 부분에서 실제로 사용 가능한 가상 주소 공간을 바이트 단위로
  반환합니다.

 

좋아요 ♥ + 구독부탁드립니다. : )

728x90
반응형