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

    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
    반응형

    댓글