Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 内存泄漏问题。如何";改为;根路径?_.net_Memory Leaks - Fatal编程技术网

.net 内存泄漏问题。如何";改为;根路径?

.net 内存泄漏问题。如何";改为;根路径?,.net,memory-leaks,.net,Memory Leaks,我有一个内存分析器和跟踪应用程序。 在该应用程序中,当我连续多次打开表单(6)时,应用程序变得不稳定,可能会关闭 怀疑有内存泄漏。因此,我跟踪以下根路径 如何读取此图以修复内存泄漏?我在堆栈顶部看到了许多EventHandler 内存泄漏的一个常见原因是实例直接由EventHandler生成。您的“泄漏”实例可能仅用作EventHandler的目标,并且没有其他方法可以访问它。他们甚至可能已经被处置了 我建议你使用这条小路。它可以捕获快照并自动指出一些常见的问题,如EventHandler使实

我有一个内存分析器和跟踪应用程序。 在该应用程序中,当我连续多次打开表单(6)时,应用程序变得不稳定,可能会关闭

怀疑有内存泄漏。因此,我跟踪以下根路径


如何读取此图以修复内存泄漏?

我在堆栈顶部看到了许多EventHandler

内存泄漏的一个常见原因是实例直接由EventHandler生成。您的“泄漏”实例可能仅用作EventHandler的目标,并且没有其他方法可以访问它。他们甚至可能已经被处置了


我建议你使用这条小路。它可以捕获快照并自动指出一些常见的问题,如EventHandler使实例保持活动状态。

根位于顶部,控件/类位于底部。通常情况下,你会朝两个方向阅读,试图找到路径中的问题。如前所述,EventHandler是一个非常常见的问题。尤其是在静态环境中。也就是说,一些类通过+=钩住一个事件,并且再也不会解除钩住。只要两个组件(类和提供类的事件)都是非静态的,并且不保存在任何其他地方,这就没有问题

在您的示例中,UserPreferenceChanged事件似乎是问题所在,我猜这是一个静态事件。因此,UltraToolbarsManager(看起来也是静态的)连接了该事件。似乎UltraToolbarsManager还处理工具栏图标的所有单击事件。所以,问题是,您的类连接到一个ToolClick事件

可能的解决办法是

  • 尝试处置/清理UltraToolbarsManager(如果是非静态的),以便 UserPreferenceChanged事件已取消挂钩或
  • 清理自己的类时,从ToolClick事件中取消挂钩

  • 好的,最初您只是编写了
    ,我在堆栈顶部看到了很多EventHandler。EventHandler是否可以让实例保持活动状态?
    这似乎是一个注释,但现在更好了。正如您所看到的,这是一个快照,我只想了解要执行的操作,或者如何“读取”问题)@serhio我知道这是一个快照。但是,它是否为您提供了识别导致泄漏的EventHandler所需的详细信息?问题中提供的所有信息都是一个堆栈。toolClick事件是原因,谢谢。我删除了这个自定义事件并直接使用了控件的事件。