我想基于使用 AJAX 从服务器异步获取的数据构建一个带有交互式刷新图表的页面。我真的很喜欢jqPlot,但是当尝试定期更新图形时(通过调用replot()
,不刷新页面),它会导致巨大的浏览器内存泄漏。这似乎是所有主要浏览器上都发生的众所周知的问题。
我没有尝试过Flot和protovis,但快速谷歌搜索显示它们似乎有同样的问题。
您是否知道任何 JavaScript 图表库在多次更新图表后不会引入内存泄漏?
你可以看看Highcharts。快速谷歌搜索似乎并不表明内存泄漏是一个很大的问题。
为避免 jqPlot 内存泄漏,您必须删除绑定并销毁图表:
var chart;
function yourTimedFunction(data) {
if (chart)
{
$('#chartDiv *').unbind(); // iexplorer
chart.destroy();
}
chart = $.jqplot('chartDiv', ............. );
}