查看: 4564|回复: 32
收起左侧

关于卡巴的虚拟内存,说说我的看法

  [复制链接]
luckykong
发表于 2013-9-12 02:32:51 | 显示全部楼层 |阅读模式
本帖最后由 luckykong 于 2013-9-12 03:53 编辑

刚刚看到了两个会员吵架的帖子(戳我可见 ,感觉两个人之所以吵架,完全是因为大家对“虚拟内存”的理解有问题。。
但是针对这一点,化石MM并没有详细的说出来,而高中杰同学也没有仔细研究过吧,所以两个开始较真,吵了起来~

针对这个问题,我觉着有必要在这里说一下我自己的看法,抛砖引玉,希望能引出大能来给大家彻底的解释一下这个问题。。

首先,从高中杰同学的“虚拟内存”说起。。。高同学也没有具体说“虚拟内存”到底是哪一个指标,那我就把它当作是最“广为人知”的“提交大小”了。
提交大小.png
但是,提交大小并不等于程序所用的内存
每个程序在运作的时候,其实并不能直接接触物理内存。在这其中,有windows的内存调度程序进行协调。具体来说,程序A运行之后,首先向调度程序说“人家想要300M内存的啦~~”,调度员蜀黍听到后立马回答说“好好,马上给你”,但是呢,虽然A说自己需要300M,但是她其实并没有用这么多的内存,实际用的可能只有100M的内存。这时候调度程序会将这个程序登记一下,记录“A需要300M,实际占用100M”~~然后按照这个记录在实际物理内存中找到100M的空间,然后给A程序说,“喏,这就是送你的300M内存。”
大家看到了么,调度员在这里变成了一个中介骗子。小A明明要300M的空间,但是调度员只给了100M。由于可怜的小A无法直接接触到内存,所以她并不能意识到调度员给他的实际空间为并不等于她提交的空间。在运行中,由于小A的任何指令都是通过调度员进行的,所以如果发生100M空间不够用时,调度员就会偷偷增加一部分,这样小A仍然无法觉察到自己的物理内存其实是远低于300M的。
即,“提交大小”是程序提出的内存需求数额,而“专用工作集”是调度程序实际分配给程序的物理内存大小。只有这部分才是真正的内存消耗。

其次,高同学认为虚拟内存是硬盘缓冲出来的,虚拟内存效率极低~~但其实,对windows而言,虚拟内存的大小,等于物理内存+页面文件。。而页面文件才是高同学所说的硬盘缓冲出来的东西。。。。

windows使用内存的方式是这样的:调度程序中途拦截所有程序的内存访问,按照实际需求,首先在物理内存中对程序的“专用工作集”进行分配,对于“提交大小”中超过“工作集”的一部分申请,敷衍了事,并不进行分配。只有当所有程序的专用工作集超出物理内存大小时,调度员才会开始使用物理磁盘上的页面文件,这时候仍然是按照“专用工作集”进行分配,多余的提交内存并不进行分配。

所以对卡巴斯基来说,那么高的“提交大小”,其实并没有问题。他实际使用的内存并不多,只不过他一开始就狮子大开口,预先把自己以后要用的内存也一并提交了而已,尽管这部分暂时根本用不到。

由于以上两点的误差,高同学误认为“提交大小”是所有已使用的内存,其中“工作集”为物理内存,二者差值为写在物理磁盘上的“虚拟内存”。但化石MM认为,在物理内存没有用完的时候,页面文件是不会启用的,这时候去看“虚拟内存”毫无意义啊,因为根本没有用到啊,就感觉讨论“虚拟内存”根本是“乱扯”,但是化石没有具体说明白,或者说化石给出了链接,但高同学没有仔细研究,导致高同学认为化石心虚了,不敢上截图~~

因此,我觉着高同学冷静一下,其实没有这么多的“黑暗内幕”,论坛还是挺不错的~~


PS。
1)以上说法只是为了方便理解,其实真正的内存分配机制比我写的复杂很多倍。甚至有些关键词的意义,在转速中也有偏差,但是我觉着对我们这些非专业人士来说,有这样的认识就足够了。
2)本人为一经济专业文科生,并不是计算机高手。我这个帖子的目的,也是想抛砖引玉,希望能有些高手出来详细解释一下~~如果说的东西有错误,欢迎指正,但千万不要打脸呀~
3)其实呢,我个人还觉着,只要电脑用起来感觉不卡,就不要管这些参数啦~~特别是内存,只要感觉不卡,即使用到80%也没关系~~

评分

参与人数 5经验 +10 人气 +5 收起 理由
哥舒夜带刀 + 1 很久没见技术贴了
honghuguyue + 1 学习了,有才
Killer_cg + 1 版区有你更精彩: )
飘落的泪 + 10 + 1 版区有你更精彩: )
胡小龙军 + 1 感谢解答: )

查看全部评分

leo_kaba
发表于 2013-9-12 04:55:29 | 显示全部楼层
文笔不错。虽然看了后仍然似懂非懂,但就凭这份热诚,绝对要给个赞
deng1111116
发表于 2013-9-12 07:02:04 | 显示全部楼层
说得真是很明白啊,以前我也不懂这些,现在懂了
a908499916
发表于 2013-9-12 07:59:51 | 显示全部楼层
8G内存,直接把虚拟内存关闭了
wjy19800315
发表于 2013-9-12 08:32:01 | 显示全部楼层
顶起楼主
喜欢这样的科普贴
hhh900
发表于 2013-9-12 08:46:35 | 显示全部楼层
这才是一个小白级别会员该有的态度,姐赞你一口
feelingdld23
发表于 2013-9-12 09:14:18 | 显示全部楼层
说得不错,又学到了一些知识!
jackieczhang
发表于 2013-9-12 09:20:25 | 显示全部楼层
又学习到了,多谢楼主科普!
Killer_cg
发表于 2013-9-12 09:27:40 | 显示全部楼层
说的好,楼主有心了!
nywlxql
发表于 2013-9-12 09:31:53 | 显示全部楼层
看了后仍然似懂非懂  只怪自己计算机知识有限  多谢科普
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-2-4 10:58 , Processed in 0.134154 second(s), 20 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表