taskmgr中的“内存使用”和“虚拟内存大小”是什么?


2

我读到:任务管理器内存列是什么意思?。但我仍然不明白他们说什么。

  • 工作集正好(MEM)大小的RAM进程内存的?
  • 分页池(VirtMem)完全是在交换文件大小进程内存的?
  • 总进程内存(地址空间使用)是否等于Mem和VirtMem的总和?

维基百科的Windows任务管理器页面提供了一些信息。

任务管理器


似乎任务管理器是获取进程拥有的RAM页面数量(例如丢弃内核和驱动程序页面)以及交换到磁盘的页数的正确工具。但我不明白哪个列可以显示这些值。





一些相关的stackoverflow.com/questions/1984186 / ...(什么是专用字节,虚拟字节,工作集?)
gavenkoa 2011年

Answers:


3

目前尚不清楚你在问什么。你问“总过程记忆”,好像这是一个明确定义的术语。它真的不是。对于对内存管理没有深刻理解的人来说,内存测量的类型基本上不存在于现代系统中。

一个更有用的方法是告诉我们你想弄清楚它是什么。我们可以告诉你如何做到这一点。人们倾向于说“我需要知道一个进程正在使用多少内存”,但这在很大程度上毫无意义。这就像询问一个人正在使用多少空间。好吧,他们共用浴室,这算不算?他们有一些东西存放在车库里,但只是因为没有人使用它,如果有人需要空间,他们可以扔掉那些东西,这算不算?

在某种程度上详细研究现代操作系统如何管理内存,物理内存和虚拟内存之间的区别,清洁页面与脏页面等等,实际上是无法替代的。这样,您就可以了解系统实际可以为您提供的数字。


“RAM上的进程内存大小”不是一个明确定义的概念。例如,如果程序读取1GB文件并且该文件仍在RAM中,那么这是否算作该进程的大小?如果另一个进程也访问该文件该怎么办?(你认为操作系统甚至会跟踪哪个进程读取文件的哪个页面?)RAM通常不属于某个进程,它都属于操作系统。
大卫施瓦茨

好。同意。RAM上的进程内存大小不是一个明确定义的概念。我不能更准确地问,因为不知道相关的术语......我去阅读有关内存管理和操作系统概念的书籍。
gavenkoa 2011年

很抱歉没有给你快速回答,但如果有帮助,阅读内存管理并获得更深入的了解将会一次又一次地得到回报。我承诺。
大卫施瓦茨

2

工作集(Mem)与RAM上的进程内存大小完全相同吗?

不是。它是进程的虚拟地址空间的子集,在英特尔页表格式的条件下是“驻留”或“存在”,这意味着可以在不引发页面错误的情况下访问它。

由于各种原因,这是一个有点误导的数字,主要是因为a)它包括一些与其他进程共享的RAM - 主要是使用一些相同代码的那些,比如来自公共库的代码,这些共享页面是计入他们居住的所有流程的“工作集”。因此,如果您将所有“工作集”大小相加,则会得到一个大于实际使用量的数字。b)另外,由于页面替换而最近从进程工作集中丢失的一些RAM可能仍然在系统的待机页面列表中,如果是这样,访问它将导致页面错误,但不会出现硬页面错误。因此,RAM包含进程可能再次使用的进程中的信息 - 但它不会计入工作集中。

内存(私有工作集)计数器是(工作集)的子集。它是工作集的一部分,对流程是私有的,即不可共享。

分页池(VirtMem)恰好是交换文件上进程内存的大小吗?

不是。分页池是一种特殊类型的内核空间内存堆。任务管理器中显示的进程中的“分页池”列表示已分配多少分页池以支持该进程的活动。

进程的所有“分页池”计数器的总数将不等于正在使用的总页面缓冲池,因为操作系统将页面缓冲池用于许多未对特定进程“收费”的内容。

总进程内存(地址空间使用)是否等于Mem和VirtMem的总和?

我猜“Mem”你的意思是“工作集(mem)”。无论如何,不​​,它不是。这是物理内存(RAM),而VirtMem是虚拟的。您无法将物理和虚拟内存大小添加到一起并提出任何合理的内容。相反,进程使用的物理内存是其虚拟地址空间的一个子集。

Windows通过混淆,不一致和不断变化的术语来混淆这个问题。例如,在你提供的屏幕上,前四个“内存 - ”计数器是物理(RAM),“提交大小”和“页面缓冲池”都是虚拟的,而“非页面缓冲池”就像分页池一样中,内核空间堆,但从来没有被寻呼)是两个分配的虚拟和物理尺寸。

还有一个你没问过的问题:

为什么内存管理如此复杂?

因为它比过去简单的系统更好地执行。对于那个很抱歉。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.