日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解

發(fā)布時(shí)間:2023/12/20 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

通俗的講工作設(shè)置內(nèi)存是程序占用的物理內(nèi)存(包含與其他程序共享的一部分),?

內(nèi)存專用工作集是程序獨(dú)占的物理內(nèi)存,?

提交大小是程序獨(dú)占的內(nèi)存(包含物理內(nèi)存和在頁面文件中的內(nèi)存).

注:頁面文件就是存放不在物理內(nèi)存中的內(nèi)存,文件路徑一般在C:\pagefile.sys,目的是為了能夠讓更多的進(jìn)程運(yùn)行,即使合起來所占用的內(nèi)存已經(jīng)超過物理內(nèi)存.?只要將其中一部分內(nèi)存轉(zhuǎn)入頁面文件,?物理內(nèi)存就可以空出來繼續(xù)運(yùn)行新的進(jìn)程.

它們之間的關(guān)系:

工作設(shè)置內(nèi)存?=?內(nèi)存專用工作集?+ 與其他進(jìn)程共享的物理內(nèi)存.

提交大小?=?內(nèi)存專用工作集?+ 保存在頁面文件中的獨(dú)占內(nèi)存.

(其中有些例外,有時(shí)候內(nèi)存專用工作集可能會比提交大小大一點(diǎn)點(diǎn),不過可以不用考慮)

?

工作設(shè)置內(nèi)存內(nèi)存專用工作集在程序不變化情況下會變化,?系統(tǒng)會考慮程序活動情況,物理內(nèi)存剩余量等減少或增加物理內(nèi)存.

提交大小在程序不變化情況下不會變化,因?yàn)槌绦蚓褪钦加昧四敲炊鄬S脙?nèi)存.

如果要測試程序占用的內(nèi)存大小,建議在程序加載完畢后記錄提交大小.其他的會變化建議不要記錄.

?

還想要了解更清楚?好孩子.

下面通過代碼來詳細(xì)了解.

首先windows任務(wù)管理器已經(jīng)不夠用了,需要用Process?explorer和VMMap工具.

接下來解釋一些名詞:

windows任務(wù)管理器中的稱謂Process?explorer中的稱謂VMMap中的稱謂
工作設(shè)置內(nèi)存Working?setTotal?WS
內(nèi)存專用工作集WS?PrivatePrivate?WS
提交大小Private?BytesPrivate
無對應(yīng)選項(xiàng)可顯示Virtual?SizeSize
無對應(yīng)選項(xiàng)可顯示無對應(yīng)選項(xiàng)可顯示Committed

?

名詞說明:

Virtual?Size:?程序總的所使用的內(nèi)存(包含共享,非共享,物理,頁面,為程序保留的但未分配的內(nèi)存)

Committed:?Virtual?Size減去為程序保留的但未分配的內(nèi)存

為程序保留的但未分配的內(nèi)存:?就是告訴系統(tǒng)我要一塊內(nèi)存,但暫時(shí)不用,不過分配的地址得給我,系統(tǒng)就給他一個(gè)不用的地址,但不分配內(nèi)存,等程序申請要使用時(shí),就從頁面或物理內(nèi)存中分配出來放在那個(gè)地址上.

?

關(guān)于頁面文件和物理內(nèi)存如何轉(zhuǎn)換稍微講解一下,當(dāng)程序要訪問某個(gè)地址,?系統(tǒng)發(fā)現(xiàn)這個(gè)地址不在物理內(nèi)存里,就會產(chǎn)生中斷,然后去讀取頁面文件,把頁面文件中與內(nèi)存相關(guān)的數(shù)據(jù)拷貝到物理內(nèi)存,然后標(biāo)記一下這個(gè)地址已經(jīng)在物理內(nèi)存中了,然后繼續(xù)讓程序運(yùn)行.

?

現(xiàn)在來看個(gè)例子:

程序main.exe定義了一個(gè)5M的全局變量,5M的常量,并申請了一個(gè)5M的內(nèi)存,程序代碼大小為2M.

?

char?g_str[5*1024*1024]; ?//5M的全局變量

const?char?STR[5*1024*1024]; ? //5M的常量

void?main()

{

char?*p?=?(char*)?HeapAlloc(GetProcessHeap(),?0,?1024*1024*5); ? //申請的5M內(nèi)存

call_lib();

}

?

程序lib.dll定義了一個(gè)4M的全局變量,4M的常量,并申請了一個(gè)4M的內(nèi)存,程序代碼大小為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程序調(diào)用了lib.dll

?

先看main.exe總的占用的內(nèi)存.

Virtual?Size?= (5M的全局變量?+?5M的常量?+?5M的內(nèi)存?+?2M的程序代碼 ? ?)

+ ( 4M的全局變量?+?4M的常量?+?4M的內(nèi)存?+?1M的程序代碼 )

=?30M.

?

然后看main.exe獨(dú)占的內(nèi)存:

提交大小)Private?Bytes?=?5M的全局變量?+?5M的內(nèi)存

+?4M的常量?+?4M的內(nèi)存

=18M.

由上可以看出獨(dú)占指的是只能進(jìn)程自己使用,?比如代碼,常量等就是共享的.

分配的內(nèi)存,可變的全局或靜態(tài)變量就是獨(dú)占的.

?

至于Working?set和WS?Private,因?yàn)槠錇樽兓?所以無法計(jì)算其值.

?

Working?set物理內(nèi)存變化規(guī)律:

一般情況下在分配出來內(nèi)存后,物理內(nèi)存只分配4K左右,等訪問到超過4K的時(shí)候,會慢慢加大物理內(nèi)存,等到系統(tǒng)總的物理內(nèi)存小于一定值后,又會將不在前臺的進(jìn)程的物理內(nèi)存減少.

如果進(jìn)程想休息了,?可以調(diào)用SetProcessWorkingSetSize(GetCurrentProcess(),?-1,?-1);

來將自己的一些內(nèi)存從物理內(nèi)存轉(zhuǎn)移到頁面文件.

?

測試環(huán)境:?Win7?32位

?

參考:

VMMAP顯示和process?explorer不一樣

http://superuser.com/questions/185318/process-explorer-not-showing-the-biggest-user-of-my-ram

?

VMMap內(nèi)存詳解

http://www.cnblogs.com/georgepei/archive/2012/03/07/2383548.html

您可以任意轉(zhuǎn)載本文,但轉(zhuǎn)載時(shí)請勿刪除作者信息。?
作者:hgyxbll,原文鏈接:http://shashanzhao.com/archives/832.html Tags:?Committed?Private?Private Bytes?Private WS?Total WS?Virtual Size?Working set?WS Private?任務(wù)管理器?內(nèi)存專用工作集?工作設(shè)置?提交大小

總結(jié)

以上是生活随笔為你收集整理的windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。