昨天在一个群里面聊的甚high。有个朋友提到她的虚拟内存不足了。
她的物理内存大小是:192M。
这里就来谈谈虚拟内存。
什么是虚拟内存?
[引用百度百科]
虚拟内存是用于当做内存来弥补计算机RAM空间缺乏的硬盘空间。当实际RAM满时(实际上,在RAM满之前),虚拟内存就在硬盘上创建了。当物理内存用完后,虚拟内存管理器选择最近没有用过的,低优先级的内存部分写到交换文件上。这个过程对应用是隐藏的,应用把虚拟内存和实际内存看作是一样的。
技术细节:对于英特尔 IA-32 处理器(包括 386、奔腾等)而言,用户应用程序(进程)访问内存时其内存地址是虚拟的,CPU 会将它转换为实际的物理内存地址。物理内存不够时,操作系统系统会将各个进程中一部分暂时不用的内存换出到页面文件(交换文件)中,并将需要访问内存的程序的内容从页面文件中换入到物理内存。
[引用结束]
用专业的语句解释:
虚拟内存是计算系统一种技术。它使得应用程序认为它拥有连续可用的内存。然而,实际上,虚拟内存可能是被分隔成多个碎片,甚至被交换到磁盘存储器上。
程序教学在Intel 386或者更高的CPU可以处理高达4GB的内存,并使用其全部32位。这就超过了一般的RAM机器了。
第32指数2是4294967296 ,或4 GB的.32个二进制数字允许的4294967296—计数0.这就是硬件规定了程序操作的条件了。它们希望能够充分利用这4GB的虚拟内存。这些地方的程序和数据就会加载到物理的RAM。CPU进行将转换后的虚拟地址指示到正确的物理RAM上。
注意点:
1.虚拟内存不只是用磁盘空间来扩展物理内存的意思,这只是扩充内存级别以使其包含硬盘驱动器而已。把内存扩展到磁盘只是使用虚拟内存技术的一个结果,它的作用也可以通过覆盖或者把处于不活动状态的程序以及它们的数据全部交换到磁盘上等方式来实现。
2.对虚拟内存的定义是基于对地址空间的重定义的,即把地址空间定义为连续的虚拟内存地址,使程序以为自己正在使用一大块的连续地址
Loading RAM
RAM中可以分为:
1. 非分页区:这里面加载的是系统核心代码。像XP。像我们有时所提到的蓝屏中“页错误在非分页区”就是指这里了。这很可能表明一个严重的硬件问题。但也有外部的实用软件造成的。
2. 页面游泳池:1.程序代码。2数据页的实际数据写入。3.基本的空间文件缓存,也就是所称Vcache。被写入。
应该要分配多大的文件呢
目前有两个错误观点:
1. 大小应该是固定的。最低和最高设为相同。
2. 大小为RAM的2.5倍(默认1.5)。或者更多。
设置虚拟内存大小,可以在我的电脑属性中设置。这里我介绍一个变态的方法:
以往的 ini 脚本里面设置虚拟内存
1.用 team+file 逐个删除各个分区里面的 pagefile.sys 文件
2.生成一个 cmd 脚本,判断各个分区里面的 pagefile.sys 文件是否已经存在
现在:
1.forx \pagefile.sys,pf,0,file %pf%
表示删除所有可见分区里面的虚拟内存文件
2.forx \pagefile.sys,pf,0,envi pagefile=%pf%
find %pagefile%=,!mess
虚拟内存文件已经建立,通知