我在这里找到了很多关于使用这种方法来检索当前内存使用情况的参考资料,在我的例子中,是在 64 位 Windows 7 上运行的 32 位进程。我的代码是
System.Diagnostics.Process[] processes =
System.Diagnostics.Process.GetProcessesByName("ProcessName");
if (processes.Count() != 1)
{
throw exception here, only one instance allowed;
}
System.Diagnostics.Process process = processes[0];
memoryUsed = process.WorkingSet64 / (1024f * 1024f);
我的应用程序动态分配和释放堆内存,我可以使用标准的 Windows 任务管理器确认这一点。但是,每次我调用上面显示的代码时,使用的检索内存总是高于以前的计数。此外,它不同意TaskManager。根据任务管理器,它大约为 249 MB,而以编程方式检索为 280 MB。
我在做傻事吗?