⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 如何获得系统的内存信息.txt

📁 如何获得系统的内存信息,TXT文档,与大家分享
💻 TXT
字号:
如何获得系统的内存信息
GlobalMemoryStatus
来自ITwiki,开放的信息技术大百科
Jump to: navigation, <jumptoSearch>
GlobalMemoryStatus,Win32 API函数。 

此函数用来获得当前可用的物理和虚拟内存信息,函数定义为: 

VOID GlobalMemoryStatus ( 

   LPMEMORYSTATUS lpBuffer         
); 

此函数无返回值,参数是一个指向名为MEMORYSTATUS的结构的指针。函数的返回信息会被存储在MEMORYSTATUS结构中。 

此函数用来替代用来支持16位应用程序的GetFreeSpace函数。 

应用程序应该在申请内存前调用此函数以防止影响到其他程序运行。 

这个函数的返回值是动态的,并且可能返回相同的值。 

关于MEMORYSTATUS结构: 

机构定义: 

typedef struct _MEMORYSTATUS { // mst 
   DWORD dwLength;        // sizeof(MEMORYSTATUS) 
   DWORD dwMemoryLoad;    // percent of memory in use 
   DWORD dwTotalPhys;     // bytes of physical memory 
   DWORD dwAvailPhys;     // free physical memory bytes 
   DWORD dwTotalPageFile; // bytes of paging file 
   DWORD dwAvailPageFile; // free bytes of paging file 
   DWORD dwTotalVirtual;  // user bytes of address space 
   DWORD dwAvailVirtual;  // free user bytes 
} MEMORYSTATUS, *LPMEMORYSTATUS; 

结构成员的含义: dwLength MEMORYSTATUS结构的大小,在调GlobalMemoryStatus函数前用sizeof()函数求得,用来供函数检测结构的版本。 

dwMemoryLoad 返回一个介于0~100之间的值,用来指示当前系统内存的使用率。 

dwTotalPhys 返回总的物理内存大小,以字节(byte)为单位。 

dwAvailPhys 返回可用的物理内存大小,以字节(byte)为单位。 

dwTotalPageFile 显示可以存在页面文件中的字节数。注意这个数值并不表示在页面文件在磁盘上的真实物理大小。 

dwAvailPageFile 返回可用的页面文件大小,以字节(byte)为单位。 

dwTotalVirtual 返回调用进程的用户模式部分的全部可用虚拟地址空间,以字节(byte)为单位。 

dwAvailVirtual 返回调用进程的用户模式部分的实际自由可用的虚拟地址空间,以字节(byte)为单位。 


void CDdsdsDlg::OnButton1() 
{
MEMORYSTATUS tmp;
CEdit *pedit=(CEdit*)GetDlgItem(IDC_EDIT1);
CString str="",str0;

::GlobalMemoryStatus(&tmp);

str0.Format("内存占用率  :    %d%% %c%c",tmp.dwMemoryLoad,'\r','\n') ;
str+=str0;
str0.Format("物理内存    :    %dB %c%c",tmp.dwTotalPhys,'\r','\n') ;
str+=str0;
str0.Format("剩余物理内存:    %dB %c%c",tmp.dwAvailPhys,'\r','\n') ;
str+=str0;
str0.Format("页面总数    :    %d %c%c",tmp.dwTotalPageFile,'\r','\n') ;
str+=str0;
str0.Format("剩余页面数  :    %d %c%c",tmp.dwAvailPageFile,'\r','\n') ;
str+=str0;
str0.Format("虚拟内存总数:    %d %c%c",tmp.dwTotalVirtual,'\r','\n') ;
str+=str0;
str0.Format("剩余虚拟内存:    %d %c%c",tmp.dwAvailVirtual,'\r','\n') ;
str+=str0;

pedit->SetWindowText(str);



获得系统的内存信息,需使用Windows API函数GlobalMemoryStatus,Delphi中的语法如下所示:

Procedure GlobalMemoryStatus(var lpBuffer: TMemoryStatus); stdcall;

其中的TMemoryStatus结构为:

TMemoryStatus=record

dwLength:DWORD;

dwMemoryLoad:DWORD;

dwTotalPhys:DWORD;

dwAvailPhys:DWORD;

dwTotalPageFile:DWORD;

dwAvailPageFile:DWORD;

dwTotalVirtual:DWORD;

dwAvailVirtual:DWORD;

下面完成一个示范程序,选择“File|New Application”菜单命令,在默认的窗体中添加1个Memo组件和1个Button组件,然后在Button的OnClick事件中添加如下所示的代码。

Procedure TForm1.Button1Click(Sender: TObject);

var

  MemoryStatus: TMemoryStatus;

begin

  Memo1.Lines.Clear;

  MemoryStatus.dwLength := SizeOf(MemoryStatus);

  GlobalMemoryStatus(MemoryStatus);

  with MemoryStatus do

  begin

    Memo1.Lines.Add(IntToStr(dwLength) +' Size of ''MemoryStatus'' record');

    Memo1.Lines.Add(IntToStr(dwMemoryLoad) +'% memory in use');

    Memo1.Lines.Add(IntToStr(dwTotalPhys) +' Total Physical Memory in bytes');

    Memo1.Lines.Add(IntToStr(dwAvailPhys) +' Available Physical Memory in bytes');

    Memo1.Lines.Add(IntToStr(dwTotalPageFile) +' Total Bytes of Paging File');

    Memo1.Lines.Add(IntToStr(dwAvailPageFile) +' Available bytes in paging file');

    Memo1.Lines.Add(IntToStr(dwTotalVirtual) +' User Bytes of Address space');

    Memo1.Lines.Add(IntToStr(dwAvailVirtual) +' Available User bytes of address space');

  end;

end; 

按下F9键运行程序,单击“内存信息”按钮,则在Memo组件中将显示有关内存的信息,如图21所示。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -