我有一个在后台运行的程序,并定期杀死一个进程。我正在使用一个带有Thread.Sleep()调用的简单循环。为了杀死这个过程,我这样做:
Dim arrProcess As Process()
arrProcess = Process.GetProcessesByName("x")
For Each RunningProcess As Process In arrProcess
RunningProcess.Kill()
Next
问题是,由于某种原因,进程数组没有收集垃圾。我试过了:
For Each p As Process In arrProcess
p = Nothing
Next
arrProcess = Nothing
GC.Collect()
但无济于事......我会认为只要进程数组超出范围(即循环迭代结束),VB.NET就能够垃圾收集它......相反,这个简单的程序很容易如果我让它运行几个小时(这是我的预期用途),就开始使用Gigs of memory。
不要问我要杀的是什么;-)问题是这里为什么会有内存泄漏。
是的,我正在发布模式中运行,而不是在调试模式下运行。