windows - 程序员对 Vista Windows 任务管理器中内存的理解

标签 windows memory windows-vista

我对 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/

相关文章:

c# - 如何查找使用 C# 安装的应用程序的版本

windows - Visual Studio 安装项目 - 每用户注册表设置

memory - 什么时候分配内存地址?

windows-7 - 在 UAC 保护区中创建文件夹

winapi - 在 Windows Vista 和 Windows 7 上使用 HEAP_NO_SERIALIZE 的堆内存函数速度减慢约 100 倍的原因

c++ - 读取目录中的所有文件名

python - Windows : "can' t decode byte 0x8f"上的 closurebuilder.py 错误

python - 读取 3.2 GB 文件时 Pandas/Python 内存峰值

.net - 在 CLR 4.0 中,单个对象的大小仍限制为 2 GB?

c++ - XP 滚动条在 Windows7/Vista 中乱七八糟