【问题标题】:Detect process running memory leaking [duplicate]检测进程运行内存泄漏[重复]
【发布时间】:2014-03-01 22:00:39
【问题描述】:

嘿,我有这个控制台应用程序,它需要运行更长的时间,其中一个功能是检测某个进程,但它在那个部分泄漏。

我在计时器中使用它进行检测:

Private Sub OnTimedEvent() Handles mytimer.Elapsed
        If Process.GetProcessesByName(Gname).Length = 1 Then
            misRunning = True
        Else
            misRunning = False
        End If
    End Sub

GC.Collect 会有所帮助,但我不确定调用 GC.Collect 是否正确。

【问题讨论】:

  • 这里似乎没有任何泄漏 - 为什么您怀疑这是导致泄漏的代码?
  • 你读过这篇文章-stackoverflow.com/questions/13084585/…吗?
  • 因为它在 ANTS Memory Profiler 中说它就在那里
  • 信息:MS Connect 条目:connect.microsoft.com/VisualStudio/feedback/details/768814/… 声明调用PerformanceCounter.CloseSharedResources 是一种解决方法
  • 是的,但在模块中使用它不起作用.....你不能在模块中使用 Shared。我尝试制作一个公共类来处理它,从模块中调用,但也没有用。

标签: .net vb.net process detect


【解决方案1】:

在上一次调用完成之前,您的代码 OnTimedEvent 中可能存在重入问题

尝试在输入方法时禁用计时器,然后重新启用它:

Private Sub OnTimedEvent() Handles mytimer.Elapsed
    myTimer.Enabled = False
    If Process.GetProcessesByName(Gname).Length = 1 Then
        misRunning = True
    Else
        misRunning = False
    End If
    myTimer.Enabled = True
End Sub

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2012-07-16
    • 2012-09-16
    • 2021-09-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多