2

我有一个程序可以进行一些非常密集的图形工作,并且需要大量内存(> 8GB),但是我的机器目前只有 8GB 的​​ RAM,这意味着程序在内存不足时会抛出错误的分配。

除了这个程序,我还打开了一些其他的东西,占用了我的一些主内存,但大多数情况下只是程序吃掉了内存。

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

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

任何人都可以给出解释吗?

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

4

2 回答 2

1

内存分配还有其他问题:

  1. 进程内存分配:进程必须向操作系统请求一个内存帧。可能是您已达到操作系统可以为您提供的最大大小
  2. 虚拟内存空间:在您的进程和程序中,您正在虚拟内存空间中工作。同样,正在运行的进程和/或程序可能无法扩展超过 32 位

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

于 2012-03-30T16:43:41.203 回答
0

什么操作系统?
你有多少内存+交换?

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

请参阅如何解决内存碎片

于 2012-03-30T16:39:50.660 回答