Windows內存 之 任務管理器

 

任務管理器中的內存概念:

工作集(內存): 進程所佔用的總物理內存. 但是這個值是由兩部分組成, 即 '專用工作集' + '共享工作集'.

所以如圖,工作集內存 = 內存(專用工作集) + 內存(共享工作集)

內存(專用工作集)是程序獨佔的物理內存

內存(共享工作集)是程序與其它進程共享的內存,比如加載一個dll所佔用的內存

提交大小是程序獨佔的內存(包含物理內存和在頁面文件中的內存).

提交大小 = 內存(專用工作集) + 保存在頁面文件中的獨佔內存.

可以通過 `EmptyWorkingSet` 向操作系統發送請求, 將此進程的不常用的內容從物理內存中換出到換頁文件中保存

這個過程也就是虛擬內存技術

 

網上的一個例子:

char g_str[5*1024*1024];//全局變量,獨佔

const char STR[5*1024*1024];//常量,共享

void main()

{

char *p = (char*) HeapAlloc(GetProcessHeap(), 0, 1024*1024*5);//內存,獨佔

call_lib();

}

 

程序lib.dll定義了一個4M的全局變量,4M的常量,並申請了一個4M的內存,程序代碼大小爲1M.

 

char g_str[4*1024*1024];//全局變量,獨佔

const char STR[4*1024*1024];//常量,共享

void call_lib()

{

char *p = (char*) HeapAlloc(GetProcessHeap(), 0, 1024*1024*4);//內存,獨佔

}

Main.exe程序調用了lib.dll

所有的程序代碼所佔內存都是共享

 

 

 

 

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