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

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

以win10为例:

找到高级系统设置
点此设置
点更改去掉勾选
建议选择你最大的磁盘然后自定义值后点设置重启生效
设置完后请在任务栏管理器自行检查:
示例
这里的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]:没错,他就是上面的相反过程,比如访问一个已经存进页面文件的程序,系统会在页面文件(硬盘上的虚拟内存部分)复制到新的虚拟内存地址空间(物理内存对应的部分)

实际上说了这么多,也许也没讲明白,要想理解透彻,建议打开任务栏管理器,找个计算器,对里面的各个值反复研究,最终能够写出等式,即可大彻大悟。
  • 20
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值