作者TimeToDie (痰吐袋)
看板Windows
标题[问题] 关於WIN7的记忆体管理方式
时间Sat Aug 8 00:48:03 2009
因为我是从XP 32 直接跳WIN7 64 的使用者,所以对於VISTA和WIN7不是很熟
我想请教,WIN7或是VISTA对於记忆体管理方面的细节
首先从资源监视器看可以看到,程式使用中的部分
我的理解是程式没有发出释放指令,所以作业系统绝对不能把他给别人
而待命是程式释放的部分,释放了如果没有用到也就放在那
就像是工具用完随手放桌上,说不定等等要用到就可以马上拿
然後快取就是系统判断记忆体还剩多不多,够多,他就依照程式设定来先预读入
这部分其实很多程式应该都没有设定快取该拿甚麽,所以作业系统会根据经验猜
最後作业系统会尽量把档案都快取入记忆体,大概只保留2-3成完全没用到的
而如果使用者读取越来越频繁 又完全不做其他的事情 系统就会智慧判断保留
最少最少的使用者介面快取 以防你突然开视窗他记忆体没快取就会读硬碟导致很LAG
前述这段有个有趣的地方 是我有用虚拟机做一台动物机 就放着跑动物
我给他1G记忆体跑 他刚好吃到实体记忆体500MB 待命(快取)500MB 其中动物吃100左右
VM的硬碟灯大概3-5秒闪1次 但是以前用XP的时候 很久没动 突然去动 超级LAG...
再来是更有趣的地方
虚拟机本身就有规划给他1G记忆体活用 虚拟机的作业系统会自行判断快取哪些档案
而虚拟机存入硬碟或是使用分页档这件事 对实体机来说看到的是VMware存取硬碟
於是实体机看到这麽大量的存取,又帮忙快取下去,於是总共就吃掉了我4G记忆体
因为够聪明快取得当,我不管做甚麽都不会感觉到延迟,很顺畅
除非瓶颈并不在记忆体,例如开WOW就不行了
以上都是我推测的不知是否有误?
我想了很久,快取除了存完硬碟也不删除等看看下次有没有又要之外
应该就是剩下作业系统主动预测先读吧?
不知道除了工作管理员和资源监视器,还有甚麽方法可以知道(最近对这些很好奇..)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.14.29
1F:→ virtuemood :程式如果没有自行管理快取,就是没有快取,但系统可 08/08 01:16
2F:→ virtuemood :以把读进ram的档案先留着,减少磁碟读写,另外,其实 08/08 01:17
3F:→ virtuemood :我对预读很反感。 08/08 01:18