首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

highcharts 内存储器泄露的解决

2012-07-20 
highcharts 内存泄露的解决使用了定时ajax刷新,趋势图不停的刷新,在chrome中没有问题,但在ie中内存的使用

highcharts 内存泄露的解决
使用了定时ajax刷新,趋势图不停的刷新,在chrome中没有问题,但在ie中内存的使用不断增加.
无意中看到了hightcharts网站上有一个内存泄露的测试,测试了一下发现ie的内存使用得到了很大改善.
http://www.highcharts.com/tests/?file=memory-chart-destroy

总结:
// 绘制趋势图
chart = new Highcharts.Chart({
hightcharts的每次绘制,返回的chart对象保存的数据占用的内存不会自动释放,除非刷新整个页面,所以在重新绘制图形前先把chart清除掉。

我的例子:

//发送异步请求,对返回的数据进行处理$.get('getDyWaveDataAjax.action?deviceId=' + deviceId, function(data, text){// charts是每次绘图的返回对象组成的数组,把它清除掉$.each(charts, function(idx,item){ item && item.destroy();item = null;});charts = null;charts = new Array();$("#mainContent").html(data);});
// myChart.js// chart对象数组var charts = new Array();// 绘制函数function drawChart() {var chart;// 绘制图表,同时返回一个chart对象chart = new Highcharts.Chart({.........}); // 把chart对象放进数组charts.push(chart);}

工作流程:
1.页面发送Ajax请求
2.Ajax请求回来后:
  a.清空charts数组(释放内存)
  b.绘制图表,同时把新产生的chart放进charts数组

就是说每次Ajax请求返回后首先清空全局变量charts,然后再绘制,不知道是否解释明白了,希望对你有帮助。

热点排行