杀死进程是否意味着免费使用过的内存?

我有服务,每秒运行外部exe程序(例如process1.exe)并杀死他们。 Taskmgr – 只显示一个进程。 运行服务后,我得到最小的空闲内存可用性。 所有进程内存和总使用内存的总和不相等。 当我运行RamMap进程时,我看到很多扩展procces1.exe。 看起来杀人的过程并不意味着释放它的记忆。

你可以build议Windows软死进程内存泄漏检测?

现代操作系统如果有其他select,则避免释放内存。 看到这个答案的更多细节。 如果页面是脏的,共享的,或者在文件系统中有一个名字,页面仍然可以被访问,所以没有必要使它免费。 只有当页面不共享和匿名时才会被释放。

如果杀死进程,内存可能仍然被占用的进程占用,但是如果另一个正在运行的程序/服务需要它,它将被释放。 你可以使用一些软件来自动释放你的内存,但是只是想尽量使用尽可能多的内存,所以操作系统会释放它。

看起来你的服务在杀死一个外部程序后没有closures句柄。 另一个可能的问题是一个错误的司机。 另请参见: RamMap显示了数百万个任务pipe理器没有的进程 (的答案)。