答案1
“内存不足”、“内存不足”等通常与可用 RAM 无关,而是与提交费用与提交限制有关。
查看任务管理器的“性能”选项卡“内存”部分的屏幕快照会很有用,因为它将显示提交费用和限制。
但是,这里有两件事看起来确实不正常,我怀疑这些足以确定问题的根源:您有大约 21,000 个进程对象(“Proc”)和大约 23,000 个线程对象(“Thre”)。
为了进行比较:我的系统也是 Windows 10,已经启动了大约 10 天,分别只有大约 200 和 3200 个这样的对象。
这可能表明您正在运行某个程序,该程序正在疯狂地创建进程并且不允许它们完全退出,可能是通过不关闭它们的句柄和/或它们的线程来实现的。虽然它们现在对您的 RAM 影响不大(它们总共占用了大约 100 MB 的非分页池),但如果进程和线程继续被创建而不被删除,它们最终将消耗您几乎所有的 RAM。提交给非分页池的 RAM 确实会增加“提交费用”,这就是为什么它们最终会导致“内存不足”或“内存不足”错误的原因。
找到罪魁祸首的快速方法可能是查看任务管理器的“详细信息”选项卡。添加“句柄”列,按该列排序,看看是否有任何异常高的值,特别是如果它不断增加。
注意:“线程”列可能没什么用。如果您正在寻找一个拥有大量线程的进程(这并非不可能),那么它会很有用 - 但这里的进程数量与线程数量大致相同,这与此相反。每个进程都有一个线程(要启动),因此进程泛滥会带来相同数量的线程泛滥 - 但这不会显示在任何一个进程的“线程”计数器中。
不过,sysinternals 工具 Process Explorer 的“进程树”视图可能会有所帮助。您正在寻找一个“下面”有很多进程的进程。
如果这不起作用,请尝试使用 sysinternals ProcMon 工具并查找进程创建事件。
如果那如果没有执行此操作,则可能是内核驱动程序执行此操作。使用 Windows 性能工具包查找进程创建事件。
有关提交费用的更多信息,请参阅下面链接的问题的答案。通常,提交费用不足可以通过添加 RAM 或增加页面文件大小(或一次运行更少的东西)来解决,但这些方法对解决这个问题没有帮助。非分页池无法分页,因此这些 Proc 和 Thre 对象必然占用 RAM。即使您的页面文件足够大以避免超出提交限制,系统最终也会由于可用 RAM 不足而出现其他问题。