使用了太多内存

使用了太多内存

我有这种感觉已经有一段时间了,看着任务管理器,心里估算应该使用多少物理内存,并注意到有很大的差异。我终于开始测量了。取任务列表的结果并添加,得到大约 3.87 GB。任务管理器告诉我我使用了 4.6 GB 的内存。这似乎是一个很大的差异。它去哪儿了?

编辑:很明显,它不会预取。也有人认为它是操作系统的一部分,但不是任何系统进程的一部分。如果这是真的,请想办法让操作系统告诉我使用了多少内存。因为我想知道内存去了哪里,所以让我看看差异对我来说毫无用处。

编辑2:不是以下内容:

  1. 内核
  2. 缓存
  3. 硬件保留内存

占用资源的图片。不太确定它会做什么,但是... 在此处输入图片描述

答案1

我建议下载Microsoft 的 Sysinternals Suite。它包含几个实用程序,它们会比任务管理器提供更多信息。查看 Process Explorer、RAMMap、VMMap 和 Process Monitor 实用程序。要从它们那里获取最多的信息,您可能需要进行一些配置来更改显示的信息。

另外,既然你对 Windows 内存感兴趣,这里是Mark Russinovich 的一系列博客文章,Sysinternals 开发人员/创始人之一。它将有助于理解实用程序提供的信息。

答案2

Windows 7 使用“未使用”内存来预缓存内容,以提高运行速度。如果您需要这些内存,它们就会被释放。

这是一个功能,而不是一个错误;)

技术网

使用 Windows Vista 系统一段时间后,您会在任务管理器的性能页面上看到可用物理内存计数器的数字很低。这是因为 SuperFetch 和标准 Windows 缓存利用所有可用的物理内存来缓存磁盘数据。例如,首次启动时,如果您立即运行任务管理器,您会注意到可用内存值随着缓存内存数字的增加而减少。或者,如果您运行一个内存占用很大的程序然后退出(任何分配大量内存然后释放内存的免费软件“RAM 优化器”都可以工作),或者只是复制一个非常大的文件,随着系统回收已释放的内存,可用数字将上升,而物理内存使用情况图表将下降。但是,随着时间的推移,SuperFetch 会用强制从内存中移出的数据重新填充缓存,因此缓存数字将上升,而可用数字将下降。

答案3

您看到的数字完全不精确,仅应作为指示。

操作系统是一个极其复杂的实体,任务管理器之类的简单程序永远无法计算出整个使用情况,它的许多部分在运行的用户模式下根本无法访问。一些无法访问的元素,或者根本无法归因于任何“任务”,包括硬件分段表、共享内存分配、内核分配的内存、页面内存分配、设备内存等等。

您可以在以下位置找到更多解释如何解读任务管理器的“性能”选项卡?,但我选择引用这部分:

无论如何,您对一个自称为“任务管理器”的程序有什么期望?操作系统内核中没有所谓的“任务” - 操作系统有“进程”和“线程”。DOS 有“任务”。英特尔硬件有“任务”结构,但操作系统不使用它们,因为它自己执行速度更快。

任务管理器是一个非常古老的 Windows 程序,甚至无法将功能归因于服务,它显示的数字应该谨慎对待。它可能遗漏了无法计数或归因于任何“任务”的大片内存。

答案4

该内存可能正用于内核。使用进程探索器我们可以看到系统内存更详细的细分:

内核内存信息

这里我标出了内核使用的内存量,即分页 WS + 非分页内存,大约 300MB 左右。这是在刚启动的系统上,只打开了 Web 浏览器和几个其他应用程序,但在高负载下,我的家用系统很容易耗尽 500MB 甚至 700MB 的内核内存。

相关内容