我读到:任务管理器内存列是什么意思?。但我仍然不明白他们说什么。
- 是工作集正好(MEM)大小的RAM进程内存的?
- 根据维基百科,这不是真的。
- 是分页池(VirtMem)完全是在交换文件大小进程内存的?
- 总进程内存(地址空间使用)是否等于Mem和VirtMem的总和?
维基百科的Windows任务管理器页面提供了一些信息。
似乎任务管理器是获取进程拥有的RAM页面数量(例如丢弃内核和驱动程序页面)以及交换到磁盘的页数的正确工具。但我不明白哪个列可以显示这些值。
我读到:任务管理器内存列是什么意思?。但我仍然不明白他们说什么。
维基百科的Windows任务管理器页面提供了一些信息。
似乎任务管理器是获取进程拥有的RAM页面数量(例如丢弃内核和驱动程序页面)以及交换到磁盘的页数的正确工具。但我不明白哪个列可以显示这些值。
Answers:
目前尚不清楚你在问什么。你问“总过程记忆”,好像这是一个明确定义的术语。它真的不是。对于对内存管理没有深刻理解的人来说,内存测量的类型基本上不存在于现代系统中。
一个更有用的方法是告诉我们你想弄清楚它是什么。我们可以告诉你如何做到这一点。人们倾向于说“我需要知道一个进程正在使用多少内存”,但这在很大程度上毫无意义。这就像询问一个人正在使用多少空间。好吧,他们共用浴室,这算不算?他们有一些东西存放在车库里,但只是因为没有人使用它,如果有人需要空间,他们可以扔掉那些东西,这算不算?
在某种程度上详细研究现代操作系统如何管理内存,物理内存和虚拟内存之间的区别,清洁页面与脏页面等等,实际上是无法替代的。这样,您就可以了解系统实际可以为您提供的数字。
工作集(Mem)与RAM上的进程内存大小完全相同吗?
不是。它是进程的虚拟地址空间的子集,在英特尔页表格式的条件下是“驻留”或“存在”,这意味着可以在不引发页面错误的情况下访问它。
由于各种原因,这是一个有点误导的数字,主要是因为a)它包括一些与其他进程共享的RAM - 主要是使用一些相同代码的那些,比如来自公共库的代码,这些共享页面是计入他们居住的所有流程的“工作集”。因此,如果您将所有“工作集”大小相加,则会得到一个大于实际使用量的数字。b)另外,由于页面替换而最近从进程工作集中丢失的一些RAM可能仍然在系统的待机页面列表中,如果是这样,访问它将导致页面错误,但不会出现硬页面错误。因此,RAM包含进程可能再次使用的进程中的信息 - 但它不会计入工作集中。
内存(私有工作集)计数器是(工作集)的子集。它是工作集的一部分,对流程是私有的,即不可共享。
分页池(VirtMem)恰好是交换文件上进程内存的大小吗?
不是。分页池是一种特殊类型的内核空间内存堆。任务管理器中显示的进程中的“分页池”列表示已分配多少分页池以支持该进程的活动。
进程的所有“分页池”计数器的总数将不等于正在使用的总页面缓冲池,因为操作系统将页面缓冲池用于许多未对特定进程“收费”的内容。
总进程内存(地址空间使用)是否等于Mem和VirtMem的总和?
我猜“Mem”你的意思是“工作集(mem)”。无论如何,不,它不是。这是物理内存(RAM),而VirtMem是虚拟的。您无法将物理和虚拟内存大小添加到一起并提出任何合理的内容。相反,进程使用的物理内存是其虚拟地址空间的一个子集。
Windows通过混淆,不一致和不断变化的术语来混淆这个问题。例如,在你提供的屏幕上,前四个“内存 - ”计数器是物理(RAM),“提交大小”和“页面缓冲池”都是虚拟的,而“非页面缓冲池”就像分页池一样中,内核空间堆,但从来没有被寻呼)是两个分配的虚拟和物理尺寸。
还有一个你没问过的问题:
为什么内存管理如此复杂?
因为它比过去简单的系统更好地执行。对于那个很抱歉。