Memory 内存不足-为什么系统没有调出最近未使用的页面?

Memory 内存不足-为什么系统没有调出最近未使用的页面?,memory,paging,bad-alloc,Memory,Paging,Bad Alloc,我有一个程序,它做一些非常密集的图形工作,需要大量内存(>8GB),但是我的机器目前只有8GB的RAM,这意味着程序在内存不足时抛出一个错误的alloc 除了这个程序外,我还打开了一些其他东西,它们占用了我的一部分主内存,但大部分都是程序占用内存 现在,我想知道为什么当系统的内存使用量达到>8GB时,系统会抛出一个bad_alloc,而不是页面错误和交换一些页面?这不是分页和虚拟内存应该解决的问题之一吗 我应该能够运行需要大于8GB内存的程序,如果它只是分页出最近未访问的页面,则能够为所需内存创

我有一个程序,它做一些非常密集的图形工作,需要大量内存(>8GB),但是我的机器目前只有8GB的RAM,这意味着程序在内存不足时抛出一个错误的alloc

除了这个程序外,我还打开了一些其他东西,它们占用了我的一部分主内存,但大部分都是程序占用内存

现在,我想知道为什么当系统的内存使用量达到>8GB时,系统会抛出一个
bad_alloc
,而不是页面错误和交换一些页面?这不是分页和虚拟内存应该解决的问题之一吗

我应该能够运行需要大于8GB内存的程序,如果它只是分页出最近未访问的页面,则能够为所需内存创建新页面

有人能解释一下吗

我的机器有一个8GB的页面文件

什么操作系统?
您总共有多少ram+交换

在运行一段时间后,是否尝试分配单个连续的8Gb区域?通常是个坏主意


请参见

内存分配中还有其他问题:

  • 进程内存分配:进程必须从操作系统请求内存帧。这可能是因为您已经达到了操作系统所能提供的最大大小
  • 虚拟内存空间:在进程和程序中,您在虚拟内存空间中工作。同样,正在运行的进程和/或程序可能无法扩展到32位以上

  • 可能还有更多类似的问题我没有列出

    什么操作系统?什么是超限制设置?我有Win7 Home Premium 64位,我在哪里可以找到超限制设置?这是一个用户程序,不是海报上写的东西-建议移动到超级用户?@MartinBeckett,从程序员的角度来看,这也是一个有趣的问题。@TonyTheLion-是的,但是如果你不能控制alloc,你就不能真正修复它。可能有用户设置可以更改-超级用户是询问thoseI的最佳位置我有8GB的物理RAM和8GB的交换文件我不太确定程序要分配什么,它是一个进行高分辨率图像编辑的程序,因此如果它在内存中加载这些,这就需要memory@TonyTheLion-我们假设您正在编写软件(就是这样),试图在一个块中分配8Gb,而只有16Gb可用空间是行不通的。尝试增加交换文件的大小-很多