程序的虚拟内存,怎么总是和内存同时增长?

wcl1986_1 2010-06-11 12:13:37
加入我读入300M的数据进入内存,这时,虚拟内存也增加300M。当然也不总这样,也有少数时候,内存20M,虚拟内存300M.
这都是什么情况下,发生的呢?
谁能告诉我虚拟内存的机制。
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
足球中国 2010-06-11
  • 打赏
  • 举报
回复
关于windows为什么要设置虚拟内存这个功能,我们已经不得而知了,大概可以猜到盖子大叔似乎在给我们省钱?用硬盘来替代内存的使用(毕竟硬盘的价格远低于内存)。
在vista 中由于内存的使用量相当大,所以很多网友把虚拟内存设置得也很大,甚至是物理内存的2倍以上!以为这能提高系统性能,实际上这是在帮倒忙。
我们知道cpu的访问顺序是高速缓存到内存再到硬盘,所以注定硬盘传输的速度比内存延迟,而且由于内部运行机制的不同,内存的内部运行速度远远快于硬盘,这就是为什么我们要不断地加大内存的容量了。但是,内存再大也会用完,如果等到用完的时候系统才来想办法解决,无疑的,我们的电脑马上就会死机。所以系统里面就有备用的虚拟内存。
虚拟内存主要依据以下3个原则进行工作:
1.在正常使用的时候,系统内部的交换(缓存)文件通常保存在虚拟内存中;
2.自动把非活动的系统进程或者程序映射到虚拟空间;
3.当物理内存低于25%左右的时候,则把虚拟内存和物理内存合并,也就是说系统此时会把你的虚拟内存也识别成物理内存。
知道了虚拟内存的工作机制我们就知道如果把虚拟内存设置过大就会导致系统提前使用你的虚拟空间,这会使你感觉的系统的速度下降,同时硬盘负担大大加重。这就是为什么vista的使用者在开机后硬盘总是不停的转,灯不停的闪,同时很多操作都有延迟的现象(尤其是在内存比较小的情况下),这就是系统在大量使用虚拟空间的表现,这个功能这时很能使你的硬盘提前下岗。所以我们首要的前提是增加物理内存,同时我个人建议虚拟空间最多设置为物理内存的1.5倍就行了。当然如果你的内存在1G以上则可以减少到0.5至1倍完全够了。
至于有的网友由于物理很大,则完全把虚拟内存禁用了,这个也是不可取的。因为从上文知道原则2规定了系统一般要使用虚拟空间(而不管你的物理内存多大),若系统在映射的时候找不到虚拟空间它会反复搜索并不停的向系统发请求,待到反映射时又可能认为找不到需要的进程,这时非常容易发生链接文件死锁或者进程不稳定。因此为了稳定,如果你的物理内存实在够大,那就把虚拟内存设置在比较小的范围里。
INGDI 2010-06-11
  • 打赏
  • 举报
回复
mark
好久没接触过虚拟内存这个概念鸟
weskiter54 2010-06-11
  • 打赏
  • 举报
回复
帮 顶
weskiter31 2010-06-11
  • 打赏
  • 举报
回复
帮 顶
weskiter31 2010-06-11
  • 打赏
  • 举报
回复
不懂,up

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧