终止进程是否意味着释放已使用的内存?

终止进程是否意味着释放已使用的内存?

我有这样的服务,每秒运行一次外部 exe 程序(例如 process1.exe)并终止它们。Taskmgr - 仅显示一个进程。运行服务后,我获得的可用内存很少。所有进程内存的总和和总使用内存不相等。当我运行 RamMap 进程时,我看到很多扩展的 procces1.exe。看来终止进程并不意味着释放内存。

您能建议 Windows 软件进行死进程内存泄漏检测吗?

答案1

现代操作系统除非有其他选择,否则不会释放内存。参见这个答案了解更多详情。如果页面是脏的、共享的或在文件系统中有名称,则仍然可以访问该页面,因此无需将其释放。只有当页面既非共享又匿名时,才会将其释放。

答案2

如果您终止进程,内存可能仍被终止的进程占用,但如果另一个正在运行的程序/服务需要它,它将被释放。您可以使用一些软件自动释放您的 RAM,但只能认为它正在尝试使用尽可能多的内存,因此操作系统将释放它。

答案3

看来您的服务在终止外部程序后不会关闭句柄。另一个可能的问题是驱动程序存在缺陷。另请参阅:RamMap 显示任务管理器未显示的数百万个进程(的答案)。

相关内容