当不使用页面文件时,提交电量为100%充满,但物理内存仅为60%


25

我已禁用页面文件在我的系统(硬盘是缓慢,不能买一个新的马上,不能页面文件移动到另一个分区)。当我查看Resource Monitor时,使用要求内存的应用程序,系统显示提交费用几乎已满100%。的确,如果我继续要求更多的内存,那么随着提交费用有效地达到100%,程序就会开始崩溃。

同时,系统表示我仅使用50-60%的物理内存,并且具有大约1GB的可用内存(空闲+备用)。

如果提交费用是实际请求的总内存,那么系统为什么会说这么多的可用内存?Windows是否正在使用物理内存?内存图是否错误?我想念什么吗?

提交费用图与物理内存图 任务管理器


2
关于该主题的另一个很好的答案是在这里:brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7
cnst 2015年

@cnst很好的文章。它帮助我更好地了解了这个问题。您为什么不张贴它作为回应?
杰森·奥维耶多

2
请不要禁用您的页面文件人员。这是一个愚蠢的主意
米尔尼(Marney),

@Milney我同意,通常不应该禁用页面文件。在出现问题时,这对我来说很有意义,因为磁盘太慢了,以至于它严重损害了我的系统。实际上,它非常有用,除了提示这个问题外,系统的总体响应能力也得到了许多改善。
杰森·奥维耶多

@JasonOviedo这不应该是这样的,并表示事情是非常错误的。给系统更多的选择应该让它慢。系统不必仅因为具有一个页面文件而使用它。(这意味着这可能是一个XY问题。正确的问题正是页面文件使您的系统变慢的原因。)
David Schwartz

Answers:


26

在仍然有大量可用RAM的情况下用尽提交限制并不罕见。提交限制和提交费用均与可用或可用RAM没有直接关系。

提交限制=当前页面文件大小+ RAM大小。

由于您没有页面文件,因此提交限制比拥有页面文件时的提交限制小。多少RAM 可用没关系。对于提交限制,仅RAM 安装量很 重要。即使90%的RAM可用或可用,您也可能用尽提交限制。

提交费用是虚拟内存而非物理内存的计数。假设我的程序要求提交2 GB的内存,但随后只能访问其中的0.5 GB。剩余的1.5 GB永远不会出错,也不会分配给RAM,因此RAM的使用不会反映2 GB,而仅反映0.5 GB。

尽管如此,“系统提交”仍增加了2 GB,因为系统已“承诺”将有一个地方可以容纳我的2 GB,如果我实际上需要全部使用的话。我不必在程序的任何给定运行中尝试全部使用它,这无济于事。我要求2 GB,从该调用中成功返回的消息告诉我,操作系统“已承诺”(即已承诺)可以使用那么多虚拟地址空间。除非有地方保留所有内容,否则操作系统无法做出承诺。

因此:一次放回您的页面文件,添加更多的RAM或运行更少的内容。或三者的某种组合。这些是避免“内存不足”和“内存不足”错误的唯一选择。

另见我的答案在这里(长)和这里(更长)。


3
具体来说,在Windows分配内存之前,它希望能够保证在使用这些分配时可以完成这些分配。即使分配未完全使用,Windows也无法拒绝分配更多的保证。页面文件(无论是否使用)都提供了额外的后备存储。
2014年

4

正如http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/中的文章中的内存分配测试所示,Windows是一种可能无法分配大量内存的系统如果这样的分配与所有先前的分配(Microsoft称之为“ commit”的概念)一起,将使“ commit”的总数超过物理内存和所有页面文件(交换)的总和。

考虑一下,在上述分配的进程的虚拟地址空间内进行读或写之前,分配本身不使用任何实际内存(物理内存或交换内存)。例如,一个2GB的分配本身只会影响“提交”数字(在Windows 7对话中),而不会单独保留“物理内存”(直到发生所述分配中的读/写操作)。

就OS设计而言,替代方法是始终允许分配任何大小(除非可用内存已经完全耗尽),然后让应用程序在读取/写入时失败。有关更多详细信息,请参见/cs/42877/when-theres-no-memory-should-malloc-or-read-write-fail


2
是。Windows方法的理由是:期望程序员检查malloc(或在Win32中为VirtualAlloc)的状态是合理的。一旦调用成功,程序就可以相信分配的vas是可用的,并且将一直保持到相应的free或VirtualFree。另一种方式,普通内存的读写操作(即指针的取消引用)会引发内存访问异常。但是没有程序员期望在每次取消指针引用后都必须检查状态。他们无论如何都不返回状态,因此必须使用异常处理程序来完成。丑陋。
Jamie Hanrahan

2

可用内存不是您认为的那样。实际上,它并没有使用未使用的文件缓存,它包含最近终止的进程或已修剪过的进程的文件缓存,这些进程已被迫放弃一些内存给其他进程。他们可以被召回原来的目的。详情请参阅。

http://support.microsoft.com/kb/312628

至于没有页面文件,这是非常糟糕的。没有一个,Windows的降级效果很差。请记住,当没有页面文件时,甚至可执行文件都将用作交换文件。即使驱动器很慢,最好也要有一个页面文件,直到您获得8到16个Gig的内存为止。有人认为Windows 7即使没有Windows也可以运行。

我经常通过做一些事情来促进旧机器的发展。尽可能清理硬盘。将您可以暂时删除的所有内容从驱动器复制到备份中。删除不需要的应用程序。删除应用程序可以重新安装。

完成所有操作后,对硬盘进行碎片整理。此时,重新创建您的页面文件。它将尽可能靠近驱动器的前部。创建一个固定大小的大约1.5倍的内存。多数民众赞成在我的规则,通常我看到1到3时间内存之间的大小。这将使其速度比通常放置的地方略有提高。

我使用的是免费的auslogic整理器(不过,ads提供了更多工具)。还有其他人也可以这样做。在Portableapps.com上查看碎片整理程序。通过将最近访问的文件放在驱动器的前部附近来优化磁盘,以加快访问速度。它显示页面文件的放置位置,以便您查看是否将其移动到驱动器的前25%。

之后,重新安装应用程序并复制回您的数据。

我会说您获得10或20%的提升。但是主要的价值在于,为了获得更流畅的体验,许多犹豫不决了。


3
通过一些测试,对于我来说很明显,当磁盘速度太慢时,没有页面文件确实可以加速系统。在简单的任务中,我可以说切换了许多秒。
杰森·奥维耶多

@Mark你弄错了。绝大多数Windows系统都使用页面文件运行(因为出于充分的原因Windows默认运行方式),并且几乎所有系统都使用速度相似的磁盘。而且几乎没有一个显示出任何此类问题。问题不在于“页面文件”,而是您没有足够的RAM。请注意,摆脱页面文件并不能消除到磁盘的分页操作,而只是消除了通常涉及分页的数百个文件之一。
Jamie Hanrahan 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.