Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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
Asp.net CallEventHandlerDelegateProxy内存泄漏_Asp.net_Memory Leaks - Fatal编程技术网

Asp.net CallEventHandlerDelegateProxy内存泄漏

Asp.net CallEventHandlerDelegateProxy内存泄漏,asp.net,memory-leaks,Asp.net,Memory Leaks,我正在尝试查找应用程序中的内存泄漏。使用DotProfiler,我可以看到在各种快照上,CalliEventHandlerDelegateProxy计数一直在增加,而且从未出现下降 我很难找到这个事件处理程序与什么相关,或者是什么代码导致了这个问题。什么通常会导致此漏洞?在加载UI控件时调用它(UI控件的OnLoad方法),以便管理回调 您可能需要检查以下几点,以关注内存泄漏搜索: 您的代码生成了多少UI控件 他们的OnLoad事件是否真的正确完成了(或者正在进行递归) 是否有从OnLoad

我正在尝试查找应用程序中的内存泄漏。使用DotProfiler,我可以看到在各种快照上,
CalliEventHandlerDelegateProxy
计数一直在增加,而且从未出现下降


我很难找到这个事件处理程序与什么相关,或者是什么代码导致了这个问题。什么通常会导致此漏洞?

在加载UI控件时调用它(UI控件的OnLoad方法),以便管理回调

您可能需要检查以下几点,以关注内存泄漏搜索:

  • 您的代码生成了多少UI控件
  • 他们的OnLoad事件是否真的正确完成了(或者正在进行递归)
  • 是否有从OnLoad活动触发的任何异步操作,以及它们是否得到了正确的管理
调用CalliEventHandlerDelegateProxy的堆栈跟踪示例可以给出以下想法:

...
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
   System.Web.UI.Control.OnLoad(EventArgs e)
   System.Web.UI.Control.LoadRecursive()
   System.Web.UI.Control.LoadRecursive()
...

感谢您提供的线索-我们确实可以从代码隐藏动态创建web用户控件,例如:
var icon=(ResponsiveImageFixedSize.ResponsiveImageFixedSize)MP.LoadControl(“~/PageControls/ResponsiveImageFixedSize/ResponsiveImageFixedSize.ascx”)。。。占位符.控件.添加(图标)。这些控件不会被处理,通常嵌套在其他控件中。这些可能是一个原因吗?它们是否应该在使用块中使用?值得一提的是,大多数控件中都有对母版页的引用。在using块中包装控件负载会破坏网站,因为它不再有母版页引用。这显然是原因。如果母版页保留引用,垃圾收集器将/不应释放资源。我会问,如果所有这些对象都是真正需要的,它们难道不能按需生成吗。没有最终用户能够处理这么多的UI控件,因此,也许UI/UX设计修订版可以帮助简化控件生成。感谢您的评论,我正在更改用户控件以从
此.Page获取母版页。母版将执行内存配置文件,而不是将其传入,并查看是否解决了此问题。这是一个相当大的网站-每个用户控件呈现非常具体但重复使用的东西,所以我不认为我们误用了它。我认为“重复使用”这个词在你的评论中很重要。您的意思是“重用对象的实例”还是“重用相同的对象定义以生成新实例”?我在想这应该是第二个,这可能是泄漏的原因。(我认为first不允许在多个地方重复使用)。