当我们退出一个进程(例如使用任务管理器等)时,Windows 会立即回收使用的 RAM 吗?
或者 Windows 是否仍保留用于该过程的 RAM?
答案1
这取决于你指的是什么 RAM。如果你指的是任何包含由进程修改的数据的 RAM,那么是的。这些值永远不能再使用。因此,RAM 必须标记为空闲。
如果您指的是包含可执行文件部分的 RAM,则不,该 RAM 不会被回收。它已被标记为可丢弃,因为系统无论如何都可以在需要时从磁盘读回数据。立即释放 RAM 会很糟糕,原因有两个:
1) 这是完全浪费的努力。如果计算机释放了 RAM,但很快就不需要了,那么释放的努力就毫无意义。如果计算机释放了 RAM,但很快就需要了,那么释放的努力只会迫使系统再次使用它,从而导致双倍的努力。(系统可以让它可丢弃,然后将其用于其他用途,而无需释放它。)
2) 它剥夺了系统再次使用该数据的机会。如果再次运行同一个程序,将数据保存在 RAM 中可以节省磁盘 I/O。
答案2
是的。内存页面被重新分配到空闲池中,在那里可以根据需要分配给新进程。操作系统中优先级极低的进程最终会将这些页面清零,并将它们添加到清零池中。您可以使用进程探索器(尽管它们很快就归零了,但很难看见)。
这两个池中的内存页面可供现有或新进程使用。一旦空闲或清零池中没有空闲页面,操作系统将开始强制从其他进程调出内存,以根据需要重新使用物理 RAM 页面。此组中有 2 个集合:备用页面和已修改页面。备用页面是已经调出到页面文件的页面,可以快速重新分配给其他进程(或同一进程内)。已修改页面设置了脏标志,需要先保存到页面文件,然后才能重新分配。