windows任務管理器中的工作設置內存,內存專用工作集,提交大小詳解

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

內存專用工作集是程序獨占的物理內存,?

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

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

它們之間的關系:

工作設置內存?=?內存專用工作集?+ 與其他進程共享的物理內存.

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

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

?

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

提交大小在程序不變化情況下不會變化,因為程序就是占用了那么多專用內存.

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

?

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

下面通過代碼來詳細了解.

首先windows任務管理器已經不夠用了,需要用Process?explorer和VMMap工具.

接下來解釋一些名詞:

windows任務管理器中的稱謂Process?explorer中的稱謂VMMap中的稱謂
工作設置內存Working?setTotal?WS
內存專用工作集WS?PrivatePrivate?WS
提交大小Private?BytesPrivate
無對應選項可顯示Virtual?SizeSize
無對應選項可顯示無對應選項可顯示Committed

?

名詞說明:

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

Committed:?Virtual?Size減去為程序保留的但未分配的內存

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

?

關于頁面文件和物理內存如何轉換稍微講解一下,當程序要訪問某個地址,?系統發現這個地址不在物理內存里,就會產生中斷,然后去讀取頁面文件,把頁面文件中與內存相關的數據拷貝到物理內存,然后標記一下這個地址已經在物理內存中了,然后繼續讓程序運行.

?

現在來看個例子:

程序main.exe定義了一個5M的全局變量,5M的常量,并申請了一個5M的內存,程序代碼大小為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內存

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

?

先看main.exe總的占用的內存.

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

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

=?30M.

?

然后看main.exe獨占的內存:

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

+?4M的常量?+?4M的內存

=18M.

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

分配的內存,可變的全局或靜態變量就是獨占的.

?

至于Working?set和WS?Private,因為其為變化量,所以無法計算其值.

?

Working?set物理內存變化規律:

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

如果進程想休息了,?可以調用SetProcessWorkingSetSize(GetCurrentProcess(),?-1,?-1);

來將自己的一些內存從物理內存轉移到頁面文件.

?

測試環境:?Win7?32位

?

參考:

VMMAP顯示和process?explorer不一樣

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

?

VMMap內存詳解

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

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458607.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458607.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458607.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

coreData mapView #include

一、coreData 需要導入系統庫CoreData 新建文件的時候選core data 中的Data Model 然后加相應的表 加完表后 在Model.xcdatamodeld中新建文件 選coredata中的第三個 即可 如果兩個表有聯系 就將附表放到主表中 在build Setting中,輸入search 在Framework Searc…

淺談 C++ 中的 new/delete 和 new[]/delete[]

來自:http://www.cnblogs.com/hazir/p/new_and_delete.html 在 C 中,你也許經常使用 new 和 delete 來動態申請和釋放內存,但你可曾想過以下問題呢? new 和 delete 是函數嗎?new [] 和 delete [] 又是什么&#xff1f…

JavaScript中的原型繼承原理

在JavaScript當中,對象A如果要繼承對象B的屬性和方法,那么只要將對象B放到對象A的原型鏈上即可。而某個對象的原型鏈,就是由該對象開始,通過__proto__屬性連接起來的一串對象。__proto__屬性是JavaScript對象中的內部屬性&#xf…

XMPP

XMPP不支持視頻聊天 支持文字聊天 但對于圖片和語音聊天支持的不好 那么就將他們轉成NSData的形式 IM Instance Message 即時聊天 聊天系統中 XMPP主要做兩個人的聊天和群聊,只用了這兩個功能 還有一個HTTP的服務器 ,他是一個旁路服務器 XMPP底層…

QT 調試

QT調試(參考下面的說明就可以正常調試):http://blog.csdn.net/wchengshen/article/details/50254731http://blog.csdn.net/sx341125/article/details/53606534 QT調用DLL: Qt中調用VS編譯dll的方法(一)----顯式調用 qt使用動態庫(…

建模元件有哪些在MapleSim中

信號庫:包含通用信號模塊、布爾、控制器、離散信號模塊、信號源、線性信號模塊、非線性信號模塊、時間離散信號模塊、查詢表、信號轉換器、數學運算、關系元件、特殊信號模塊,應用案例。 電子庫:包含電阻、運算放大器、二極管、步進電機、模擬…

iOS小筆記

controller:連接二者的橋梁;cocoa frameworks 有兩個框架:foundationfoundation 是cocoa中最基本的一些類;再mac應用程序中負責對象管理,內存管理,容器等相關數據;uikit:uikit&…

【C++】VS2010將寫好的程序打包成安裝文件發布

參考鏈接:http://blog.csdn.net/yongh701/article/details/51326142 我們可以將自己寫好的VS2010程序打包成安裝文件,給用戶安裝,具體步驟如下: 1、如下圖,同樣是新建一個項目,但是這次是新建一個其它項目…

01_jeecms建站

一、環境安裝 JDK5TOMCAT5.5MYSQL5及以上http://www.jeecms.com/tutorial/index.jhtml參考環境安裝篇二、解壓文件安裝包jeecms-v5zip,如圖圖1ROOT文件夾復制放到tomcat下的webapps文件夾(注:請先刪除webapps下原有的默認ROOT文件夾)如不想部…

WiFi基本知識

轉自:http://blog.csdn.net/myarrow/article/details/7930131 1. IE802.11簡介 標準號IEEE 802.11bIEEE 802.11aIEEE 802.11gIEEE 802.11n標準發布時間1999年9月1999年9月2003年6月2009年9月工作頻率范圍2.4-2.4835GHz 5.150-5.350GHz5.475&a…

iOS各種小理論知識

Objective-C 部分 1. 你如何理解 OC 的內存管理 OC 內存管理是基于引用計數。誰想使用某個對象 B,就要把對象 B 的計數器1,如果不 使用這個對象了,那么就把對象 B 計數器-1,如果 B 對象計數器減到 0,那么 B 對象自動會調用自己的 dealloc 函數,也就是這個對象被銷毀。 一…

libev 宏展開

想看源碼,宏太多,看著累,宏展開,再看,功力時間不夠,先放下 放上宏展開后的代碼。 libev4.20 展開方示為 ./configure 修改makefile文件,字符串 替換CC為 CPP 注意要把基礎的CC定義保留 make mv …

FreeRTOS高級篇7---FreeRTOS內存管理分析

原文:http://blog.csdn.net/zhzht19861011/article/details/51606068 內存管理對應用程序和操作系統來說都非常重要。現在很多的程序漏洞和運行崩潰都和內存分配使用錯誤有關。 FreeRTOS操作系統將內核與內存管理分開實現,操作系統內核僅規定了必要的內…

筆試題

1.是不是一個父類寫了一個virtual 函數,如果子類覆蓋它的函數不加virtual ,也能實現多態? virtual修飾符會被隱形繼承的。private 也被集成,只事派生類沒有訪問權限而已。virtual可加可不加。子類的空間里有父類的所有變量(static除外)。同一個函數只存…

FreeRTOS學習筆記——互斥型信號量

來自:http://blog.csdn.net/xukai871105/article/details/43456985 0.前言 在嵌入式操作系統中互斥型信號量是任務間資源保護的重要手段。下面結合一個具體例子說明FreeRTOS中的互斥型信號量如何使用。 【相關博文】 【FreeRTOS STM32移植筆記】 【FreeRTOS學習筆記…

JSP動態網站環境搭建應用中的詳細步驟(Tomcat和Apache/IIS的整合)

鏈接地址:http://www.cnblogs.com/dartagnan/archive/2011/03/25/2003426.html JSP動態網站環境搭建應用中的詳細步驟(Tomcat和Apache/IIS的整合)sun推出的JSP(Java Server Pages)是一種執行于服務器端的動態網頁開發技術,它基于J…

關于JS獲取select值的兩種實現方法

前幾天發了一篇關于javascript獲取select值的方法&#xff0c;后來發現有另一種實現方法&#xff0c;所以就都發出來比較一下&#xff1a; 方法一&#xff1a;通過獲取option標簽的value值來確定&#xff1a; <!DOCTYPE html> <html> <head><meta charset…

c語言題庫1

1. 用預處理指令#define 聲明一個常數&#xff0c;用以表明1年中有多少秒&#xff08;忽略閏年問題&#xff09; #define time (365*24*60*60) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365) 2. 寫一個“標準”宏MIN&#xff0c;這個宏輸入兩個參數并返回較小的一個。 #di…

FreeRTOS系列第19篇---FreeRTOS信號量

來自&#xff1a;http://blog.csdn.net/zhzht19861011/article/details/50835613 本文介紹信號量的基礎知識&#xff0c;詳細源碼分析見《FreeRTOS高級篇6---FreeRTOS信號量分析》 1.信號量簡介 FreeRTOS的信號量包括二進制信號量、計數信號量、互斥信號量&#xff08;以后簡稱…

mysql語法替換字符串

UPDATE ht_business_task SET url REPLACE ( url, &amp;, & )轉載于:https://www.cnblogs.com/lz20150121/p/5030739.html