【发布时间】:2019-04-17 10:33:51
【问题描述】:
我有一个程序会定期启动另一个带有Process.Start() 函数的进程。
几个小时后,我可以使用 Windows 资源监视器检测到内存泄漏。
我可以看到大量的句柄输入"Key" on:
"\REGISTRY\MACHINE\SOFTWARE\Classes.exe"
"\REGISTRY\MACHINE\SOFTWARE\Classes\exefile"
"\REGISTRY\MACHINE\SOFTWARE\Classes\exefile\shell\open"
这是我的代码: 我的代码很简单:
Process streamerProcess = new Process();
streamerProcess.StartInfo.FileName = SEStreamRequester.StreamerPath;
streamerProcess.StartInfo.Arguments = parameters;
try {
streamerProcess.Start();
m_streamerPid = streamerProcess.Id;
}
catch(Exception e) {
m_streamerPid = 0;
throw new System.ComponentModel.Win32Exception(
string.Format("Error while start streamer:{0}", e.Message)
, e
);
}
finally {
streamerProcess.Dispose();
}
其中parameters 和SEStreamRequester.StreamerPath 是字符串
如果我正确处理了所有 Process 实例,我在我的代码中进行了搜索,我认为是这样。您如何确认 Process 实例使用了这些句柄? 如何找到泄漏源?
谢谢。
【问题讨论】:
-
您能否提供一些代码,以便我们了解您要做什么?
标签: c# memory-leaks process.start