AJAX内存泄漏/膨胀

时间:2011-08-18 22:56:47

标签: ajax comet

我正在使用Web界面进行实时聊天应用程序,并且我在FF5(Linux二进制文件)中获得了不断增长的内存占用。奇怪的是,Chromium没有表现出膨胀。我正在做的是以下内容:

1)一个功能启动循环:

function init_chat ()
        {
            doAjax ("my-url", handler_name);
        }

2)doAjax功能:

function doAjax(address, ajax_handler)
        {   
            var xmlhttp;

            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            } 

            xmlhttp.onreadystatechange = function() {ajax_handler(xmlhttp);};

            xmlhttp.open("GET", address, true);
            xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xmlhttp.send();
        }

3)在服务器上,请求线程最多等待3秒以获取新信息,并返回JSON响应

4)处理函数处理响应并再次调用doAjax,其自身作为处理函数。

据我所知,这不是真正的递归,因为ajax调用应该生成一个新线程,并且处理函数理论上不应该将跳转指针保持回doAjax函数。也许我正在创建一个闭包,它没有被正确收集?如果是这样,我该如何避免呢?

提前致谢, 维克。

1 个答案:

答案 0 :(得分:1)

我见过与FF类似的东西 - 通常极端的记忆膨胀来自像萤火虫这样的插件;但是,我总是建议手动取消JS中的对象以强制清除内存。使用JS的内存管理通常很差,最好在自己之后进行清理。手动:(