GlobalMemoryStatus详解

VOID GlobalMemoryStatus(
LPMEMORYSTATUS lpBuffer // 内存状态的指针
);
用法我就不讲了,现在我们讲讲MEMORYSTATUS结构里每个成员分别代表什么
typedef struct _MEMORYSTATUS {
DWORD dwLength;
DWORD dwMemoryLoad;
SIZE_T dwTotalPhys;
SIZE_T dwAvailPhys;
SIZE_T dwTotalPageFile;
SIZE_T dwAvailPageFile;
SIZE_T dwTotalVirtual;
SIZE_T dwAvailVirtual;
} MEMORYSTATUS, *LPMEMORYSTATUS;
DWORD dwLength; 使用之前先令其等于结构的大小
dwMemoryLoad:内存负载率,其实也就是内存使用率
dwTotalPhys:总的物理内存,我在我的512MB虚拟机上测试为536330240bytes,比512MB少540672bytes,其实这部分被用作引导进程
dwAvailPhys:可用的物理内存=dwTotalPhys*(1-dwMemoryLoad)
dwTotalPageFile:总的页面文件的大小,其实就是物理内存加虚拟内存的总大小,但是这里有个问题,物理内存少了一部分
这里写图片描述这里写图片描述
为什么这么说,当前分配的虚拟内存为672MB,但是可用内存总数为1154MB,1154-672=482MB,当然这个值可能因不同的计算机而有差异,但是在我的机器上有512MB-482MB=30MB被挪作他用,刚好核心内存为26MB,再加上显卡最大内存为8MB,我算一半,以上只是我的猜测,写在这里,只是作为我的一种猜想
dwAvailPageFile:很显然这个值等于现在正在使用的物理内存+已分配的虚拟内存
dwTotalVirtual:每个进程的的地址空间的总字节数,比2GB少128KB
dwAvailVirtual:每个进程的的地址空间的可用字节数,比如你在地址空间中申请了一个64KB(分配粒度)的内存,那么,地址空间的可用字节数就会再减去64KB

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章