用电脑的朋友应该都知道虚拟内存这个东西,它存在的时间比一些年龄小的朋友岁数还大,早在windows2000时代就已经存在虚拟内存选项,虽然我们总是看到这个东西但很多朋友并不明白虚拟内存到底有什么用,所以虚拟内存到底是什么?
其实虚拟内存最开始存在的起因是因为当时的电脑内存有限,系统和CPU均为32位,而32位支持物理内存的极限为3.25G,在应对一些大型应用的时候经常会捉襟见肘,于是虚拟内存便应运而生。
虚拟内存其实就是将一部分硬盘空间划分出来当做内存来使用,放在内存读取顺序的最末端优先度上,应用程序认为自己是在一个连续完整的物理内存空间上,而实际上该程序已经被分割成为多个物理内存的碎片。
一部分碎片被存放在虚拟内存也就是硬盘的预留空间上,在将要被使用时这部分数据被重新提取到内存中,于是呈现出一种内存大小提高的假象,提高运行速度。
那么只有windows有这个功能吗?其实在linux上同样也存在这个功能,只不过它的名字不叫虚拟内存,而是叫做“交换空间”,原理和作用都是一样的。
那么它详细的原理是什么?我们知道即使开了虚拟内存,硬盘上也不会出现一大堆文件,其实原理是这样的:CPU先查询应用程序的数据是否存在于物理内存上,如果存在的话就直接调用,没有的话就放入硬盘中。
而这些文件并不会直接放进硬盘的正常位置,而是放进一个名为Pagefile.sys的文件中;当该程序需要的数据在物理内存中无法寻找到时,虚拟内存中的文件便会被调动回物理内存。
说了这么多,虚拟内存该怎么设置?
根据目前的建议来看虚拟内存大多数情况下建议设置1.倍到3倍于物理内存的大小,虽然windows会自动为你设置虚拟内存的大小,不过你依然可以手动设置。
那么如今大家早已进入64位时代,每个人的电脑内存容量都越来越大,16G已经成为了正常水平,虚拟内存是否还有存在的必要?
其实是有的,但不是所有情况。在我们日常使用过程中16G内存足够支撑我们完成绝大多数工作,但虚拟内存的存在有时候和物理内存的大小无关。
例如深度学习、科学实验计算等应用程序,他们的软件会自动将大量数据放入虚拟内存中,细心且用过这类软件的用户应该会发现不论自己内存有多大,在虚拟内存中总会有几个G的数据。
这部分数据不放进内存的原因很简单:需要调用的次数并不多且占用空间极大,软件会自动为你放入虚拟内存来节省物理内存空间,这种做法从某种程度上来说是双刃剑,如果你关闭了虚拟内存反倒会让软件产生不适应从而出现问题;
除此之外高运算的软件都会非常吃内存,虚拟内存的存在就是为了满足这类软件的内存摄入,甚至有的软件对虚拟内存有着针对性需求,如果没有打开虚拟内存软件就会报错。
总体来说虚拟内存已经成为了我们系统使用过程中的一个重要功能,不少软件就算只能用得上1G内存也非要分出一点占用在虚拟内存中。
如果关闭的话甚至会导致软件崩溃,以目前我们内存容量来说8G的内存建议分配20G虚拟内存,而16G内存的话分配24G就足够了,如果分的太大反而会因为硬盘的大规模连续读写而导致硬盘寿命严重降低。