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.mzph.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