![为什么我的 8GB RAM 丢失了一半?](https://linux22.com/image/1404010/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%208GB%20RAM%20%E4%B8%A2%E5%A4%B1%E4%BA%86%E4%B8%80%E5%8D%8A%EF%BC%9F.png)
坐在一起8GB RAM两年来,我一直认为我需要另外 4GB 内存,从未质疑过为什么我经常收到物理内存不足的消息,如果不立即处理,所有打开的程序(主要是 Firefox,因为我主要使用它)都会被关闭。然后我必须重新启动占用最多内存的程序(Firefox 就是其中之一)才能继续正常工作,而不会丢失任何未保存的更改。
无论如何,我注意到虽然系统看到 8GB 的 RAM,但它仍然使用其中的一半,我将通过屏幕截图进一步演示这一点。
系统信息和任务管理器的组合截图:
资源监视器截图:
RAMMap截图:
最后是我的交换文件在不同时间的情况。重点是它一直很大:
注意 ”可用的“ 和 ”自由的“来自上面截图的内存。这是我在任务管理器中大部分时间看到的内容,在 Firefox 中再打开 5-7 个选项卡会导致”记忆不足“警告出现。
当前使用的主显卡:
有什么想法吗?
WLTRAY.EXE
这里没有提到,但看看这个:
系统规格
- 戴尔 Latitude E6420
- 8GB RAM,120GB 英特尔固态硬盘
- 英特尔高清显卡、nVidia NVS4200M
- Windows 企业版 64 位
2014 年 5 月 3 日更新 - 我认为问题不在于无线适配器进程。我仍然认为这与 Firefox 有关。以下是任务管理器的屏幕截图:
RamMap:
虚拟机地图:
更新:01/04/15
看起来我的整个系统都有内存泄漏。我尝试使用 Chrome,但最终像 Firefox 一样,它在以下情况下崩溃:消息显示在这里或导致 BSOD 或黑屏,重新启动是再次工作的唯一方法。
这是我的 Chrome 浏览器在上次重启几个小时后运行的状态,其中有 29 个标签页:
Windows 任务管理器
资源监控
Chrome 任务管理器
我已重新启动 Chrome,以下是统计信息:
Windows 任务管理器
资源监控
Chrome 任务管理器
答案1
“为什么我的 8GB RAM 有一半丢失了?”
它不是丢失的,甚至不是没用过。大约 4GiB 处于活动状态,另外还有 3.3GiB 处于非活动状态,但也在使用中。3.3GiB 已准备好分页到磁盘,但您没有为其分配空间,因此它仍保留在物理 RAM 中。“已修改”内存是有效地如果磁盘页面不足,则与“正在使用”没有区别。
64 位操作系统和 PAE 均不允许任何 32 位进程使用超过 4GiB 的内存(32 位/PAE 上为 2 个用户/2 个内核,x64 上为 4GiB 用户)。请参阅:突破 Windows 的极限:虚拟内存) 的记忆是否记忆当前已分页到物理 RAM 或磁盘上。
因此,对于没有 64 位版本的 Firefox,这意味着 Firefox 最终被限制在 2GiB(PAE)或 4GiB(x64)的用户空间内存不管安装的 RAM。即使您安装了 64GiB 物理 RAM,如果 Firefox 超出使用量,它也会耗尽其内存限制。
这看起来过多了,可能表明内存或句柄泄漏。更糟糕的是,就你的情况而言,页面文件不够大,无法将任何泄漏的进程移动到磁盘,因此你基本上强制泄漏只进入物理 RAM。
在 TechNet 文章中Win7 x64 中“修改后”的内存使用量过多,超过 3.6GB,有什么建议吗?,有类似症状(较大的共享/修改块)的用户发现:
已修改内存是指由某个应用程序分配然后从该应用程序的工作集中删除的内存,通常是因为很长时间未使用。大多数内存处于此状态意味着两件事:
- 某些应用(或多个应用)分配了大量内存,但大部分内存并未被积极使用。这通常(但并非总是)是由于应用中存在内存泄漏。
- 页面文件不够大,系统无法将所有未使用的内存移至磁盘。
最后,正如 magicandre1981 所建议的,问题出在戴尔无线(Broadcom)LAN 托盘应用程序上:
谢谢大家,我遇到了同样的问题,添加了句柄和 GDI,然后看到BCMWLTRY.EXE,戴尔无线托盘实用程序,正在不停地创建句柄。谢谢你的建议。更新:所以我禁用了启动 BCMWLTRY.EXE 的服务并重新启动,现在我看不到句柄泄漏了。WLTRAY.EXE 仍在运行,但没有泄漏句柄。
同样地,在共享内存中修改的内存过多,
原因就是戴尔 wlan 实用程序。在任务管理器中终止 bcmwltry.exe 进程释放了内存。但几秒钟后该进程又启动了。这有点糟糕 - 我无法卸载它。幸运的是,这台笔记本无论如何都需要更改操作系统,所以我甚至不想修复它。... 这里也有同样的问题。最后终止并禁用 DW WLAN (bcmwltry.exe) 可以释放 5 GB 内存。 它漏水了。
托盘应用程序 BCMWLTRY.EXE 同样与页面文件不断增大,直到内存耗尽
BCMWLTRY.EXE/Dell Wireless Tray 问题 (WLTRAY.EXE)、诊断和解决方案的其他参考:
- WLAN 卡驱动程序 (BCMWLTRY.EXE) 出现大量内存泄漏
- WLAN AutoConfig-内存泄漏
- 定位大量内存泄漏
- 内存泄漏问题
- “您的计算机内存不足。请退出其他程序,然后重试。”
- 在配备 8GB RAM 的 64 位 Windows 7 上出现“内存不足错误”
所以,在这些情况下,问题实际上不是司机,而是托盘应用程序驱动程序附带的。我同意,考虑到您的无线网卡的 OEM、BCMWLTRY.EXE 正在运行以及大量几乎相同的问题,这是问题的第一部分。
您还可以将“句柄”和“页面错误”列添加到任务管理器,以检查是否存在过度使用的情况,以防出现更多错误程序。您可以使用 SysInternals虚拟机地图查看分配虚拟内存从每个进程的角度来看。句柄泄漏是阴险的,因为它们也可能泄漏 Windows 对象。Microsoft 提供了一个名为应用程序验证器除其他外,这将有助于追踪泄漏的句柄。
所以答案是:你可能有内存泄漏,这是可能在 BCMWLTRY.EXE(或其他一些应用程序泄漏句柄或类似的共享资源)中,并且操作系统缺乏磁盘支持页面来更“优雅地”*处理这种情况。
* 内存泄漏并没有什么特别“优雅”的地方,但 ~4GiB 页面文件会让进程运行到其固有限制(充当配额)然后崩溃,从而在事件日志中创建一个明显的模式:特定进程崩溃后释放所有资源,如果重新启动,则重复此过程。如果没有固有的 32 位地址空间限制,它可能首先会占用大量磁盘空间。事实上,全部这些进程现在受到资源限制,因此不清楚它是由于自身的泄漏(Firefox)还是因为另一个应用程序(BCMWLTRY)而被关闭。
答案2
您修改的内存列表太高(参见 ResMon 中的大橙色条)。这使用了超过 3GB 的 RAM。一个已知原因是 Broadcom Wifi 驱动程序太旧。如果您的笔记本电脑使用 Broadcom Wifi 适配器,请更新驱动程序或使用 msconfig.exe 停止启动 BCMWLTRY.EXE 以修复它。
答案3
前段时间有人对我开了个恶作剧,编辑了我的 MSConfig 设置,限制了我的最大内存,如下所示:
所以这是另一个潜在原因。
答案4
您的系统正在使用全部 8GB RAM,但使用效率不如您所愿。我看到系统上有大量缓存。当应用程序需要更多 RAM 时,Windows 会自动减少缓存大小。
关于页面文件大小,我会引用某个真正知道他们在说什么的人(Mark Russinovich)的话:
也许与虚拟内存相关的最常见问题之一是,我应该将页面文件设为多大?网络上和报摊上有关 Windows 的杂志上充斥着各种荒谬的建议,甚至微软也发布了误导性的建议。几乎所有建议都是基于将 RAM 大小乘以某个因子,常见值为 1.2、1.5 和 2。
如果您想知道系统上真正发生了什么,那么请立即停下来阅读 Mark 关于 Windows 内存管理的整个系列文章。他可能是这类东西方面的世界权威。
我自己在 Windows 系统上设置了绝对最小的页面文件大小(刚好够保存一个小型转储),甚至完全禁用它。在正常系统使用期间,您永远都不想使用该页面文件。如果您这样做,那么是时候购买更多 RAM 或关闭一些应用程序了,您自己选择。
当与人类时间尺度相关时,考虑 RAM 与 SSD 或硬盘的速度。[存储级内存:技术、系统和应用 - 第 22 页]
- RAM 访问大约需要 60 纳秒,按照人类可理解的尺度,我们将其等同于 1 分钟。
- SSD 访问大约需要 50us,比 RAM 慢约 800 倍,以人类的尺度来看大约需要 14 个小时。
- 快速硬盘访问需要 5 毫秒,比 RAM 慢约 83,000 倍,以人类的标准来看大约需要 60 天。
难道仅仅因为 RAM 不足,您真的希望 RAM 被半随机地转移到比 RAM 慢 1K 倍或 100K 倍的存储设备吗?
我还未看到任何人提及的另一点是 Intel HD Graphics 3000 芯片使用“共享内存”。从您展示的屏幕截图来看,它可以消耗多达 1.7GB 的 RAM。因此,您就不要再使用大约 1GB 的总 RAM 了。