我对 XP 中的 Windows 任务管理器有一些了解,但我想在 Vista 中更好地理解它。 “工作集(内存)”和“内存(私有(private)工作集)”有什么区别。什么是Paged Pool,什么是NP Pool(Non-Paged?)。如何使用这些来确定内存使用情况?顺便说一句,当你最小化一个程序时,它经常返回它正在使用的 90% 的内存。有没有办法做到这一点而不最小化它?
最佳答案
This MSDN blog entry可能对问题的第一部分提供信息。简短摘录:
Working set is the subset of virtual pages that are resident in physical memory only; this will be a partial amount of pages from that process.
正如文章中所讨论的,关于私有(private)与非私有(private)的部分与进程使用的内存有关,这些内存可以由其他进程共享。如果你不能共享内存(也许内存被一个DLL的镜像使用,必须在内存中重新定位),它就变成了私有(private)的。堆内存也总是私有(private)的。
您在最小化程序时看到内存急剧下降的原因是 Windows 会在其主窗口最小化时自动修剪进程的工作集。见 this Microsoft KB article了解更多信息,包括有关如何自己执行此操作的说明。
分页池和非分页池内存是指进程使用的内核内存。分页池中的内存可以被分页(当内存压力增加时从物理内存中移除)。非分页池中的内存将始终保留在物理内存中,因此通常最好保持较小。不过,除非您正在编写设备驱动程序,否则作为用户模式应用程序开发人员,您通常不需要担心这两项。
关于windows - 程序员对 Vista Windows 任务管理器中内存的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/215285/