function test() {
            $.ajax({
                url: "ajaxcs/Monitor.ashx",
                cache: false,
                data: { type: "test", veh: "" },
                success: function(data) {
                    if (data == "NoSession") {
                        //rdRToLogin(); return;
                    }
                    else {
                        //                       var a = data; a = null;
                        //                        var b = data; b = null;
                        //                        var c = data; c = null;
                        //                        var d = data; d = null;
                        //                        var e = data; e = null;
                        //                        var f = data; f = null;
                        //                        var g = data; g = null;
                        //                        var h = data; h = null;
                         CollectGarbage();
                    }
                },
                error: function(data) {
                    alert(data.responseText);
                }
            });
        }        onload = function() {
            setInterval(test, 1000);
        }; 这样的代码怎么释放内存(内存会不断增加).
--------------------------------------帅签分割线-------------------------------------------------

解决方案 »

  1.   

    <script>
    var inter = null;
    function test() {
                $.ajax({
                    url: "ajaxcs/Monitor.ashx",
                    cache: false,
                    data: { type: "test", veh: "" },
                    success: function(data) {
                        if (data == "NoSession") {
                            //rdRToLogin(); return;
                        }
                        else {
                            //                       var a = data; a = null;
                            //                        var b = data; b = null;
                            //                        var c = data; c = null;
                            //                        var d = data; d = null;
                            //                        var e = data; e = null;
                            //                        var f = data; f = null;
                            //                        var g = data; g = null;
                            //                        var h = data; h = null;
                             CollectGarbage();
                        }
    clearInterval(inter);
                    },
                    error: function(data) {
    clearInterval(inter);
                        alert(data.responseText);
                    }
                });
            }        onload = function() {
                inter = setInterval(test, 1000);
            };     </script>
      

  2.   

    clearInterval(inter);
    我本来就需要一个定时器,你把我的定时器clear掉干什么呢?
    --------------------------------------帅签分割线-------------------------------------------------
      

  3.   

    楼主为什么需要不断的执行ajax,这样肯定会耗内存的,建议能不能在需求上或者思路上转变一下
      

  4.   

    1,clearInterval的话就完全不成实现我的功能了(定时向服务器请求更新客户端数据).要在有定时器的情况下释放内存.
    2,如果这个定时器在服务端的话,怎么传给前台数据呢?还不是要ajax请求?--------------------------------------帅签分割线-------------------------------------------------
      

  5.   

    JS自身有一套完整的内存回收机制。另外我感觉setTimeout写在success的callback函数里面会更加增加程序的健壮性
      

  6.   

    同意!
    setTimeout写在callback里
      

  7.   

    1秒钟发一次ajax 前端可能都受不了 并发次数太多了 直接挂死也说不定
      

  8.   

    可以把jquery升级到1.6,它在ajax上做了很多优化。之前的版本如1.4一个请求超时或错误没有终结的处理。,你可以试试做个对比。(我是在返回数据类型jsonp时发现的。我有个项目也是要不停的更新页面数据,不过每次返回的数据很小,影响不是很大。ajax 还是用1.6好)
      

  9.   

    建议用jsonp因为它的原理是在页面引用你的callback,再把数据当作数传入,这样不会增加很多内存(只是引用callback而已),使用的是js回收机制,js回收机制会很好的把‘参数’这部分内存释放掉(这只是我的理解)。其它的方式,不是用的这个原理,回收机制不一样,有的是DOM增加减少,内存是如何处理就不好说了。。