Bra*_*don 25 memory windows-10
我一直遇到一个问题,如果我的系统在没有重新启动的情况下运行了几天,我将开始收到警告说“关闭程序以防止信息丢失”,然后出现一个提示我关闭程序的对话框,我可以取消或点击“关闭程序”,Windows 将强制关闭对话框中列出的部分或全部应用程序。
我打开任务管理器,看到目前只有大约 30% 的内存正在使用:
当我打开资源监视器查看特定应用程序使用了多少已提交的内存时,我仍然看到内存使用率相对较低:
我遇到这个问题已经有一段时间了,一直在努力寻找解决方案。我已经通过使用 poolmon 调查了驱动程序泄漏等原因,但从未在 poolmon 中看到任何与其他人所描述的驱动程序内存泄漏危险信号相匹配的内容。让我特别困惑的是为什么 Win10 在我只使用了 33% 的系统内存时告诉我关闭应用程序。
Jam*_*han 17
重新你的最后一个问题 - 简短版本:错误消息是关于“提交的”虚拟地址空间。如果您查看第二个屏幕快照中的 Commit Charge 图表,您会发现它确实处于或非常接近极限。
“空闲”、“可用”或“正在使用”的 RAM 量无关紧要。特别是“可用”RAM 的短缺绝对不是“内存不足”或“内存不足”消息的原因。
提交限制等于总 RAM + 页面文件大小。当分配了提交的内存时,它会立即被收取“提交费用”,即使它实际上还没有被使用......这意味着没有立即使用 RAM 或 PF 空间。物理空间(无论是在 RAM 中还是在页面文件中)仅在实际引用内存时使用。从那以后它一定有地方可以存在,直到程序释放它,或者整个过程结束。
示例:假设您没有页面文件,因此您的提交限制为 16 GB(您的 RAM 大小)。现在,假设 8 个进程每个尝试 VirtualAlloc(MEM_COMMIT) 1 GB。结果:提交费用增加了 8 GB。但是,对 RAM 没有直接影响!就好像你在文具店买了一叠纸,但实际上并没有得到任何纸。但是,每次您需要一张新纸时,都会神奇地出现一张。直到用完整个焊盘(分配区域的大小)。
现在假设这些进程中的每一个实际上只访问了其 1 GB 中的 100 MB。使用的 RAM 仅为 800 MB。
但是由于它们中的每一个都可能引用其所有的 1 GB,因此操作系统必须确保 8 GB 的 RAM+页面文件空间......好吧,在没有页面文件的情况下只有 RAM......在发生这种情况时保持可用. 回到文具店,他们需要保留足够的纸张库存,以便给每个人提供与之前购买的纸张一样多的纸张。
因此,当当前提交的数量达到限制时,操作系统必须停止允许 VirtualAlloc(MEM_COMMIT) 成功。
为什么?因为进程要检查VirtualAlloc的结果,看是否成功。一旦这样做并发现分配成功,该进程就完全有权期望其对整个提交区域的后续引用将成功。
如果 Windows 允许提交费用超过实现该空间的可用空间量,那么该期望就不能总是得到满足。
一个快速的解决方法是增加页面文件的默认(=初始)大小。从上面的解释中,您应该能够明白为什么这会避免错误消息,即使该文件可能不会写入任何内容。同样,操作系统确保所有提交费用的空间在需要时可用。当进程分配提交的内存时,他们只是说“嘿,操作系统,我可能需要这么多。” 这并不意味着他们会实际使用它,当然也不意味着他们已经实际使用过它。
现在......为什么当你的进程似乎没有加起来时你使用那么多提交是另一个问题。要开始查看,请显示任务管理器的性能选项卡,内存部分。
Zan*_*ynx 15
在这里胡乱猜测。
您已按照某人的随机“优化”建议禁用了交换文件。
您有某种类型的 OS 驱动程序,需要一大块连续的物理 RAM。但它无法获得它,因为随着时间的推移,所有物理 RAM 都已碎片化。并且由于交换文件被禁用,它无法进行 RAM 碎片整理。
启用交换文件。
正如我所说,疯狂的猜测。
| 归档时间: |
|
| 查看次数: |
38266 次 |
| 最近记录: |