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

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