![资源监视器未显示所有正在使用的内存](https://linux22.com/image/603052/%E8%B5%84%E6%BA%90%E7%9B%91%E8%A7%86%E5%99%A8%E6%9C%AA%E6%98%BE%E7%A4%BA%E6%89%80%E6%9C%89%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E5%86%85%E5%AD%98.png)
我的服务器目前内存利用率为 97%(在 32GB 服务器上刚好超过 30GB),但当我将任务管理器或资源监视器中的值相加时,只显示使用了大约 1GB 的内存。关于如何找出消耗我所有内存资源的因素,您有什么想法吗?
答案1
内存分类比任务管理器中显示的要多。特别是待机列表。SysInternals 的 RAMMap 将是提供该信息的实际工具。
活动:(也称为有效)该页面是工作集(进程工作集、会话工作集或系统工作集)的一部分,或者不在任何工作集中(例如,非分页内核页面)并且有效的 PTE 通常指向它。
过渡:不属于工作集且不在任何分页列表中的页面的临时状态。当页面的 I/O 正在进行时,页面处于此状态。PTE 经过编码,以便可以识别和正确处理冲突页面错误。(请注意,此处对“过渡”一词的用法与无效 PTE 部分中的用法不同;无效过渡 PTE 指的是备用或修改列表中的页面。)
备用:该页面以前属于工作集,但已被删除(或直接预取/群集到备用列表中)。自上次写入磁盘以来,该页面未被修改。PTE 仍引用物理页面,但被标记为无效且处于转换状态。
已修改:该页面之前属于工作集,但已被删除。但是,该页面在使用时被修改,其当前内容尚未写入磁盘或远程存储。PTE 仍引用物理页面,但被标记为无效且处于转换状态。必须先将其写入后备存储,然后才能重用物理页面。
已修改无写入:与已修改页面相同,不同之处在于页面已被标记,因此内存管理器的已修改页面写入器不会将其写入磁盘。缓存管理器根据文件系统驱动程序的请求将页面标记为已修改无写入。例如,NTFS 将此状态用于包含文件系统元数据的页面,以便它可以首先确保事务日志条目在它们所保护的页面写入磁盘之前刷新到磁盘。
空闲:该页面空闲,但其中含有未指定的脏数据。(出于安全原因,这些页面不能在未初始化为零的情况下作为用户页面提供给用户进程。)
清零:该页面是空闲的,并且已由零页线程用零初始化(或确定已包含零)。
Rom:该页面代表只读存储器。
坏:该页面已生成奇偶校验或其他硬件错误,无法使用。
答案2
现代操作系统只有在有理由的情况下才会释放内存。释放内存需要资源,而当必须再次使用内存时,这种努力就浪费了。因此,只有在别无选择的情况下,它们才会释放内存。
内存仍然被上次使用它的人使用。很可能它包含磁盘上数据的副本。如果再次读取该数据,它将为系统节省磁盘操作。所以这比释放它更好。
你想让内存自由现在你可以使用它之后。但内存不必现在释放,以后才能使用。事实上,正在使用的内存现在以后更有可能被使用。
想象一下,你走进一家工厂,那里所有的员工都在做事。也许有些人在做一些不重要的事情,比如扫地或坐在电话旁边以防电话响起。但没有人坐在沙发上什么也不做。你是否想知道为什么没有更多的员工坐在沙发上什么也不做——如果有特别重要的事情要做,他们就会开始工作?总是有某物你可以做到。也许这不是世界上最有用的东西,但比坐在沙发上什么也不做要好。
因此,您的一些员工正在做重要的事情。一些员工只是在等电话铃响。但您不希望他们躺在沙发上什么也不做。