javascript - setInterval() 方法中的内存泄漏

标签 javascript html memory-leaks highcharts setinterval

我正在创建一个基于 javascript 的 html 仪表板。为了刷新仪表板图表中的值,我编写了以下代码:

var chart, options;

function loadDynamicData() {            
    var data = window.parent.getDynamicData();
    var dataArray = data.split(',');

    for(var i = 0; i < chartData.length; i++) {
        chartData[i].data.pop();
        chartData[i].data.push(parseInt(dataArray[i],10));
    }
}

$(document).ready(function() {
    //initialize options here
    setInterval(function () {
        loadDynamicValues(); // loads dynamic values through ajax
                             // and updates options
        chart = new Highcharts.Chart(options);
    }, 300000);
});

但问题是当我在浏览器中运行它很长时间(大约 1 小时)时,正在使用的内存增加并且浏览器变得无响应。如果我删除 setInterval() 方法并运行其中的代码一次,那么就没有问题。

这可能是什么问题?

最佳答案

请在创建新图表之前执行 chart.destroy()。

if (chart) chart.destroy;

这里是测试链接。 http://www.highcharts.com/tests/?file=memory-chart-destroy

关于javascript - setInterval() 方法中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13855683/

相关文章:

html - 如何将带有圆 Angular 的边框作为图像和内部背景颜色来透视?

c++ - 适当破坏某些类(class)成员

javascript weakmap 保留对已删除对象的引用

c++ - 抛出异常返回内存异常错误

javascript - 如何使用 Dropzone.js 按文件类型更改上传目的地?

javascript - 为什么闭包比全局变量更适合保存变量?

javascript - 在使用 Ember 和 ember-data 设置模型属性之前如何编辑表单数据?

javascript - 如何在需要转换为 JS Obj 的 JSON 字符串中传递 "this"

javascript - 如何在casperjs中以特定间隔运行循环?

javascript - 从数组填充 Bootstrap 4 表?