您的位置:首页 > 其它

GlobalMemoryStatus详解

2017-11-29 23:21 399 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: