重复加载大型JSON数据时内存泄漏

时间:2013-01-28 15:55:59

标签: jquery debugging memory-leaks httprequest

即使没有处理或存储返回的数据,也会发生这种情况。

以下是上下文:

HTML包含

<table border="0" cellpadding="2" cellspacing="0" class="formPanel" style="width:100%">
        <tbody><tr>
            <td>
                <span style="vertical-align:middle;">
    <span>Date:
        <input id="datePicker" name="DatePicker" maxlength="10" value="20130128"/>
    </span>
        <input id="go-btn" style="width:80px;" type="button" value="Go"/>
                </span>
            </td>
        </tr>
    </tbody></table>

JavaScript是

$(function(){
    // Extracted the previously anonymous function to reduce memory used to store "compiled code"
    function processData(data) {
        //process data
    }
    // Extracted the previously anonymous function to reduce memory used to store "compiled code"
    function clickHandler() {
        var keys = ['googlechrome','firefox','opera', 'webkit', 'ie']; 
        for(var i = 0; i < keys.length; i++) {
            /* Previously a method call
             */        
            var date = $("#datePicker").val().replace(/-/g, ''),
                // A local URL, That returns a max of 5MB.
                url  = "/get_usage?date="+date;

            url += '&user_agent=' + keys[i];
            url += "&min_count=250";


            $.getJSON(url, processData);
        } 

    }
    $("#go-btn").click(clickHandler);
});

只需点击一下,收到的数据的实际大小约为10MB,但当我检查Chrome的任务管理器中的内存列超过30MB时,&amp;一段时间后,垃圾收集大约4MB(不知道这是不相关的)。

我怀疑jQuery的getJSON方法,因为删除它&amp;将阵列大小增加十倍,整体内存没有太大差异。

1 个答案:

答案 0 :(得分:0)

  

正如我在问题中提到的,在删除包含$ .getJSON方法的行时,我的内存没有泄漏。我猜这是Erik提到的JSONP调用的问题。感谢您的回复