页面将内存使用量爆炸到80MB然后死掉

时间:2011-02-25 16:04:44

标签: c# asp.net ajax

我正在使用asp.net和chrome,一段时间后页面变得无法响应。当我查看chrome调试时,我发现内存使用量增加到大约80MB,chrome会弹出一个请求来杀死页面。当弹出窗口出现时,错误计数器会旋转并产生大约30,000个错误。触发错误的是调用updatepanel。 chrome中显示的错误是“无法加载资源”。

更新面板:用户单击按钮,面板将刷新。页面上只有一个更新面板。

这就是我所拥有的:

function HistoryUIActions() {
     $('.SelectDay, .SelectDay1Digit').click(function () { GetNewDate(this); });
};


function GetNewDate(thedateitem) {

    var TheDay = $.trim($(thedateitem).html());
    TheYear = 2011;
    ThisMonth = 2;

    DateString = ThisMonth + '/' + TheDay + '/' + TheYear;

    __doPostBack('<%= TheUpdatePanel.ClientID %>', DateString);
 };


function EndRequestHandler(sender, args) {
    HistoryUIActions();
 };

每次回发都会出现错误:1,4,11,26,57,120,247 ....最终Chrome会杀死页面。当我在函数中放置一个断点时,它会在我按下按钮后停止代码;然后在它到达__doPostBack行之后,它会再次启动GetNewDate函数,返回到click事件的行,显然执行上面显示的次数。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

咄。 :)看了十几次后,我想我有答案,或者至少有一部分答案。

您的点击控件位于更新面板之外。然而,在每次刷新后,您调用“HistoryUIActions”将click事件与jQuery绑定。每次单击它时,这将使绑定到控件的单击事件数量翻倍。

点击处理程序是累积的。除非重新呈现控件的实际DOM元素,否则不需要重新绑定它。每次单击时都会添加重复的处理程序。

这应该解决多次刷新问题,然后你可以找出点击后没有正确加载的内容。