OSError: [WinError 1455] 页面文件太小,无法完成操作。

先不多说、介绍一下调大页面文件的大小

以win10为例:

OSError: [WinError 1455] 页面文件太小,无法完成操作。_第1张图片
OSError: [WinError 1455] 页面文件太小,无法完成操作。_第2张图片
OSError: [WinError 1455] 页面文件太小,无法完成操作。_第3张图片
OSError: [WinError 1455] 页面文件太小,无法完成操作。_第4张图片
设置完后请在任务栏管理器自行检查:
OSError: [WinError 1455] 页面文件太小,无法完成操作。_第5张图片
这里的112G就是虚拟内存(Virtual Memory)的大小?(存疑),它包含页面文件、物理内存还有一些其它的神秘的东西。

最后希望以上设置能解决您的问题。

多说一点:

这个问题的出现是我在使用pytorch过程中,如果感兴趣的话可以看我的这篇文章:pytorch之pin_memory=True
本文相关名词的娱乐式科普
物理内存[Physical memory]:没错就是你插到主板上的那几条宝贝,你看得见它,你还可以抚摸它(尽量别带电去抚摸,此电包括静电)。
虚拟内存[Virtual Memory]:顾名思义它是虚拟的,至少它绝对不是你插在主板上的那几条子RAM。除了嵌入式“裸跑”,可以说但凡操作系统之上的程序基本都是“活在”操作系统(且该操作系统有虚拟内存技术)给的虚拟内存下(ps:你的代码取到的都是操作系统给你的“虚假的”内存地址,有没有觉得很恶心,哈哈)。不过活在操作系统下也很舒服,因为它帮你处理了空闲物理地址不连续啊之类的问题,让你的程序安安心心的感觉自己活在一个连续的地址里(但是是假的,但是活得挺香)。
虚拟地址空间[Virtual Address Space,VAS]:你的程序获得的系统分配的虚拟地址池,就是它活的舒服的那块连续内存地址。
页面文件[page files]:windows的官方解释,上面设置的那个就是页面文件,它能让硬盘的一些空间充当虚拟内存来用(就是说虚拟内存中有一部分来自物理内存,还有一部分会来自于硬盘的页面文件),且会通过某种方式与“对应物理内存的虚拟内存地址”区分开来(存疑)。官方的话是“Therefore, make sure that you set the system commit limit high enough to support the system commit charge during peak usage.”。但显然,页面文件属于虚拟内存。实际上页面文件即使不设置,系统会自动的按照需要大小自动设置(而且这个设置是及时生效的不用重启),但是会有一个上限,一般是物理内存大小的一倍,而出现本文标题这个错误,基本上是因为这个上限仍然不满足运行需要,所以要手动设置
页[page]:上面我们说操作系统为程序创造了虚拟的地址,但实际上系统也是嫌麻烦不可能精确的去找到很多1bit大小的内存块去给程序分配,一般是找一小片,这一小片你可以理解为是一块连续的内存地址写在一页纸上,所有的地址在同一本书上,但是里面的每一页都有等量条目的连续地址…感觉说太多有点乱,等我回去再研究研究内存管理再更新。
页出[Page Out]:上面讲到页,系统会在特定情况下自动的把有些页的内容(地址和存储内容)复制到页面文件(硬盘上的虚拟内存部分),并释放原来的。这里记住一点就是,我们目前知道虚拟内存地址一部分来自物理内存,一部分页面文件,活跃运行的程序肯定是在来自物理内存的那一部分
页入[Page In]:没错,他就是上面的相反过程,比如访问一个已经存进页面文件的程序,系统会在页面文件(硬盘上的虚拟内存部分)复制到新的虚拟内存地址空间(物理内存对应的部分)

实际上说了这么多,也许也没讲明白,要想理解透彻,建议打开任务栏管理器,找个计算器,对里面的各个值反复研究,最终能够写出等式,即可大彻大悟。

你可能感兴趣的:(Windows,pytorch,操作系统)