javascript 重复执行函数,内存溢出

 function getDeviceCatalogo() {
    var json = {"苏州":{"用户1":{"device_ID":["101","102"],"name":["设备1","设备2"],"state":["正常","离线"]},"用户2":{"device_ID":["104","105","106","107"],"name":["设备1","设备2","设备3","设备4"],"state":["离线","正常","故障","离线"]}},"无锡":{"用户3":{"device_ID":["201","202","203"],"name":["设备1","设备2","设备3"],"state":["故障","正常","故障"]},"用户4":{"device_ID":["204","205","206","207"],"name":["设备1","设备2","设备3","设备4"],"state":["正常","故障","故障","正常"]}}};
    var device_catalog_html = '';
    for (var prop1 in json) {
        device_catalog_html += '<div class="list"><div><i class="fa fa-angle-down fa-fw fa-lg"></i>' + prop1 + '</div>';
        for (var prop2 in json[prop1]) {
            device_catalog_html += '<div class="list1"><div><i class="fa fa-angle-down fa-fw fa-lg"></i>' + prop2 + '</div><div class="device_list">';
            for (var i in json[prop1][prop2].name) {
                var class_name, prepend_i;
                switch (json[prop1][prop2].state[i]) {
                    case '正常':
                        class_name = 'normal';
                        prepend_i = '<i class="fa fa-fw fa-modx fa-spin"></i>';
                        break;
                    case '故障':
                        class_name = 'wrong';
                        prepend_i = '<i class="fa fa-fw fa-scale fa-flash"></i>';
                        break;
                    case '离线':
                        class_name = 'off';
                        prepend_i = '<i class="fa fa-fw fa-power-off"></i>';
                        break;
                }
                device_catalog_html += '<div device_ID="' + json[prop1][prop2].device_ID[i] + '"device_name="' + json[prop1][prop2].name[i] + '" state="' + json[prop1][prop2].state[i] + '" class="' + class_name + '">' + prepend_i + json[prop1][prop2].name[i] + '</div>';
            }
            device_catalog_html += '</div></div>'
        }
        device_catalog_html += '</div>';
    }
    for (var i = 0; i < $('#device>.body>.device_catalog').children().length; i++) {
        var target = $('#device>.body>.device_catalog').get(0);
        var e = target.childNodes[i];
        delete target.removeChild(e);
        e = null;
        delete e;
    }
    $('#device>.body>.device_catalog').html(device_catalog_html);
}

setInterval(getDeviceCatalogo, 2000);

以上的代码在浏览器执行的时候,会让内存不断增长,最终会吃光内存,请老司机帮忙看一下,哪个地方的问题。。。

测试了firefox内存很稳定,没有出现一直增长的情况,你用的是什么浏览器?

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

建议使用:
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。