我正在创建一个基于 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/