asp.net - Microsoft ASP.NET Ajax 是否会导致 DOM 对象泄漏?

标签 asp.net dom asp.net-ajax memory-leaks

我们一直在使用“Drip”来尝试确定为什么带有 UpdatePanels 的页面倾向于使用大量客户端内存。对于具有常规回发的页面,我们看到 Drip 检测到 0 次泄漏。然而,当我们添加一个更新面板时,更新面板内的每个 DOM 对象似乎都会泄漏(根据 Drip)。

我不确定 Drip 是否足够可靠来报告这些类型的事情 - 报告的泄漏似乎表明 Drip 正在稍微修改页面。

有人对这个有经验么?我应该 panic 并停止使用 Microsoft Ajax 吗?我并不怀疑微软,但对我来说它可能这么糟糕似乎很可疑。

此外,如果您知道一种比 Drip 更好的工具,那也会有所帮助。

最佳答案

根据 ASP.NET AJAX in Action ,第257

Just before the old markup is replaced with the updated HTML, all the DOM elements in the panel are examined for Microsoft Ajax behaviours or controls attached to them. To avoid memory leaks, the components associated with DOM elements are disposed, and then destroyed when the HTMl is replaced.



因此,据我所知,更新面板中的任何 asp.net ajax 组件都被处理以防止内存泄漏,但其中的任何其他内容都将被接收到的 html 替换。

因此,如果您在响应的目标容器中没有任何 asp.net ajax 组件,它与任何其他 js 框架/ajax 请求的内部 html 替换基本相同,所以我会说这只是如何浏览器处理这个,而不是导致这个的 asp.net ajax。

此外,虽然它可能是“泄漏”,但它可能是设计使然,这意味着浏览器可能尚未回收 dom 元素并释放它们。此外,drip 可能会导致那些泄漏,因为它附着在那些 dom 元素上。

关于asp.net - Microsoft ASP.NET Ajax 是否会导致 DOM 对象泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44080/

相关文章:

javascript - 将 jsonArray 发送到方法 MVC Controller

asp.net - AjaxControlToolkit 的 "proper"标记前缀是什么?

javascript - HTML:监听输入的*所有*变化,而不仅仅是键盘驱动的变化?

javascript - 对 document.documentElement 感到困惑

c# - 这段代码有多糟糕?

c# - 如何根据某些属性将对象分成 block ?

php - 如何输出DOMDocuments?

c# - 使用 C# 读取附加到 HTTP 扩展的 BLOB

c# - 如何在每个第 n 个位置将连字符附加到字符串?

c# - 模拟 AppDomain 回收