我有一台新的戴尔笔记本电脑,运行 Windows 7 64 位,内存为 8GB。如果我让系统运行一整夜,第二天就会出现内存不足错误。查看任务管理器,它显示已使用 6.27GB,但查看进程列表,总数并没有显示那么多。我显示了所有用户的所有进程。
我也使用 Process Explorer 查看了这些进程并看到了相同的结果。
使用资源监视器时,我发现已使用 4165MB,已修改 2328MB,待机 1352MB,只有大约 345MB 可用。这些数字似乎与我正在运行的程序(Visual Studio 2010 以及多个 IE8 会话)不符。
我曾在具有 4GB 内存的 32 位 Windows XP SP2 上运行过同一组应用程序,从未遇到过此类问题。
什么是修改内存?什么是待机内存?
对于可能存在的问题以及如何解决该问题,您有什么建议吗?
答案1
如果您有进程资源管理器,请检查内核内存 - 当我的 nvidia 图形驱动程序崩溃时,我会将大约 2gb 的内存泄漏到那里。
如果您正在查看进程资源管理器中的分页列表,它会分解如下:清零 - 这些页面未使用,并已被零覆盖。空闲 - 这些页面根本没有分配。已修改 - 应用程序已更改此页面,需要将其写入磁盘才能替换。已修改无写入 - 应用程序已更改此页面,但在替换之前无需写回。待机 - 这些页面最近正在使用。如果需要它们,则可以将它们重新分配给另一个应用程序。下面的优先级显示了 Windows 认为该页面再次需要的可能性。如果应用程序每秒使用一次页面,那么如果 Windows 将该页面重新分配给另一个应用程序,它必须每秒将其分配回,因此如果我们有一个页面 20 分钟前被后台应用程序使用过,并且从那时起就没有使用过,那么这不是很有用,我们可以重新分配,而不是每秒在两个应用程序之间来回移动同一页面。您的“可用”内存为 Zeroed+Free+Modified+ModifiedNoWrite+Standby
至于如何修复它,如果是驱动程序崩溃或内存泄漏,您只需用没有此问题的较新或较旧的版本替换该驱动程序即可。遗憾的是,我不知道有什么方法可以查看分配给每个驱动程序的内存量,尽管在高端系统上有 150 个进程和 50000 个句柄打开(steam、WoW、多个编辑器、带有 40 个选项卡的 google chrome),我使用大约 500mb 的分页物理内核内存、500mb 的分页虚拟内核内存和 150mb 的非分页内核内存。如果在抱怨内存问题时您偏离了整整 GB,则驱动程序在某个地方出现故障。其余内存应在进程列表中说明。
答案2
BCMWLTRY.exe
该问题是由戴尔笔记本电脑上标准安装的 Broadcom WLAN 托盘应用程序引起的。
如果我查看任务管理器并查看句柄和页面错误,它们的数量非常大。一旦我终止 BCMWLTRY 进程,我的所有内存问题都解决了。该进程会自行重新启动,因此必须将其卸载或更新。
错误的版本是5.60.18.8
,我已将其替换为5.60.48.35
。重新启动后,我会告诉您这是否是有效的修复。
==> v5.60.48.35 有同样的问题。您可以重命名 C:\Program Files\Dell\DW WLAN Card 中的 BCMWLTRY.exe,这样它就无法自行重启
答案3
重要的是要了解 Windows 的“内存不足”或“内存不足”警告与物理内存或 RAM 无关。它们与虚拟地址空间有关,或者更准确地说,与提交限制有关。现在,分配和引用大量已提交虚拟地址空间的程序也将拥有臃肿的工作集(物理 RAM 分配),但这不是弹出警告所针对的内容。
顺便说一句,如果您有大量待机,则物理内存并不不足。待机是“可用”的一部分。
编辑-添加:我的更长的回答这里更充分地解释了这一点。