我们的一个ASP.NET页面存在严重的内存泄漏。在手动启用/禁用过程之后,我将问题范围缩小到一组可折叠面板,这些面板动态构建在代码页上并放置在页面上已经存在的UpdatePanel中。
使用sIEve,我能够看到这个控件显然创建了大量的脚本标记,每个标记都有以下形式(忽略sIEve钩子属性):
<SCRIPT type=text/javascript __sIEve_hookedNode="true">Sys.Application.add_init(function() {
$create(AjaxControlToolkit.CollapsiblePanelBehavior, {"ClientStateFieldID":"ctl00_Main_branchPanelExtender_ClientState","CollapseControlID":"ctl00_Main_btnBranchExpander","Collapsed":true,"CollapsedSize":0,"CollapsedText":"* ; ","ExpandControlID":"ctl00_Main_btnBranchExpander","ExpandedSize":100,"ExpandedText":"Collapse","ScrollContents":true,"TextLabelID":"ctl00_Main_btnBranchExpander","id":"ctl00_Main_branchPanelExtender"}, null, null, $get("ctl00_Main_BranchPanel"));});</SCRIPT>
我认为这是问题,但我不完全确定。 sIEve并未将其报告为内存泄漏,但DOM节点肯定在增加,页面大小也会失控。我也不知道该怎么办。我最好的猜测是没有调用(或不存在)相应的remove_init,但我在AjaxControlToolkit库项目中找不到任何函数调用。
是否有其他人遇到此问题或有任何关于如何进行修复的想法?
编辑:浏览器信息 当然,这主要是IE 6,但我也注意到FireFox 3的问题.Opera和Chrome似乎没有内存泄漏,但Chrome也没有正确渲染控件。
更多信息: 我在使用HoverMenuExtender的另一个页面上发现了类似的问题。似乎每次发布UpdatePanel时DOM都会增长,而IE永远不会释放内存。是否有一种方法可以捕获哪些项目并暂停并手动删除它们,或者我是否过于谨慎,IE最终会在需要时释放内存?
答案 0 :(得分:0)
嗯,这个没有答案,我怀疑有人会来。这个问题可以简单地回答,但是“它是IE6”。有时某些DOM元素(Option标签中的选择元素看起来特别容易)只是不清理,所以它们会随着时间的推移填充DOM。讨厌,但只是在IE6中管理的另一件事。