QQ
活力38921
在线时间1659 小时
阅读权限200
管理员
孤魂野草
- 积分
- 6418
- 主题
- 173
- 回帖
- 2220
- 注册时间
- 2011-12-18
- 最后登录
- 2024-9-8
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
作者:hgyxbll,原文链接:http://shashanzhao.com/archives/832.html
虽然是中文字,但是理解起来还是很困难,什么叫工作设置内存,什么叫内存专用工作集,什么叫提交大小,区别是什么,让人看了一头雾水.
通俗的讲工作设置内存是程序占用的物理内存(包含与其他程序共享的一部分), 内存专用工作集是程序独占的物理内存, 提交大小是程序独占的内存(包含物理内存和在页面文件中的内存).
注:页面文件就是存放不在物理内存中的内存,文件路径一般在C:\pagefile.sys,目的是为了能够让更多的进程运行,即使合起来所占用的内存已经超过物理内存. 只要将其中一部分内存转入页面文件, 物理内存就可以空出来继续运行新的进程.
它们之间的关系:
工作设置内存 = 内存专用工作集 + 与其他进程共享的物理内存.
提交大小 = 内存专用工作集 + 保存在页面文件中的独占内存.
(其中有些例外,有时候内存专用工作集可能会比提交大小大一点点,不过可以不用考虑)
工作设置内存和内存专用工作集在程序不变化情况下会变化, 系统会考虑程序活动情况,物理内存剩余量等减少或增加物理内存.
提交大小在程序不变化情况下不会变化,因为程序就是占用了那么多专用内存.
如果要测试程序占用的内存大小,建议在程序加载完毕后记录提交大小.其他的会变化建议不要记录.
还想要了解更清楚?好孩子.
下面通过代码来详细了解.
首先windows任务管理器已经不够用了,需要用Process explorer和VMMap工具.
接下来解释一些名词:
windows任务管理器中的称谓 | Process explorer中的称谓 | VMMap中的称谓 | 工作设置内存 | Working set | Total WS | 内存专用工作集 | WS Private | Private WS | 提交大小 | Private Bytes | Private | 无对应选项可显示 | Virtual Size | Size | 无对应选项可显示 | 无对应选项可显示 | Committed
|
名词说明:
Virtual Size: 程序总的所使用的内存(包含共享,非共享,物理,页面,为程序保留的但未分配的内存)
Committed: Virtual Size减去为程序保留的但未分配的内存
为程序保留的但未分配的内存: 就是告诉系统我要一块内存,但暂时不用,不过分配的地址得给我,系统就给他一个不用的地址,但不分配内存,等程序申请要使用时,就从页面或物理内存中分配出来放在那个地址上.
关于页面文件和物理内存如何转换稍微讲解一下,当程序要访问某个地址, 系统发现这个地址不在物理内存里,就会产生中断,然后去读取页面文件,把页面文件中与内存相关的数据拷贝到物理内存,然后标记一下这个地址已经在物理内存中了,然后继续让程序运行.
|
|