`

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);
});
分享到:
评论
4 楼 chenshijie 2014-08-04  
其实highcharts有一个全局的变量highcharts.charts
3 楼 chenshijie 2014-08-04  
d
2 楼 tjmljw 2012-06-14  
qingchenyuji 写道
博主能说的详细点吗?我用的是jquery+Ajax,直接把chart = new Highcharts.Chart({ })封装成一个新的函数,供异步刷新时调用。您是清除的chart中的数据(charts),还是直接把chart清除掉?代码看的不太明白,望不吝赐教。谢谢!


你好,因为在我的程序中一次Ajax请求回来后会绘制多个chart,所以声明了一个全局的数组charts(如下所示)
// 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,然后再绘制,不知道是否解释明白了,希望对你有帮助。
1 楼 qingchenyuji 2012-06-13  
博主能说的详细点吗?我用的是jquery+Ajax,直接把chart = new Highcharts.Chart({ })封装成一个新的函数,供异步刷新时调用。您是清除的chart中的数据(charts),还是直接把chart清除掉?代码看的不太明白,望不吝赐教。谢谢!

相关推荐

    动态显示JSP服务器内存的Ajax程序 图像版_systemjc

    "图像版"意味着这个程序使用图形化方式展示内存使用情况,可能使用了各种图表库如ECharts或Highcharts,以更直观地显示内存使用率、堆内存和非堆内存的变化趋势等。这有助于管理员快速理解和判断服务器的性能状态。 ...

    [其他类别]动态显示JSP服务器内存的Ajax程序 图像版_systemjc.zip

    【标题解析】 标题提及的是一个使用Ajax技术的JSP程序,目的是动态显示服务器的内存信息。...在开发和维护大型Java web应用时,这种工具能够帮助开发者及时发现和解决内存泄漏等问题,提高系统的稳定性和效率。

    [其他类别]动态显示JSP服务器内存的Ajax程序 图像版_systemjc.rar

    这个项目不仅是一个学习资源,也是一个实用的工具,可以帮助开发者实时监控服务器内存状态,及时发现潜在的性能问题或内存泄漏,从而提升应用的稳定性和效率。通过研究和实践这个项目,你可以深入了解JSP、Ajax以及...

    其他类别动态显示JSP服务器内存的Ajax程序

    2. **服务器内存管理**:了解如何监控和分析JVM(Java Virtual Machine)的内存使用情况,包括堆内存、非堆内存、PermGen(已废弃,现在是MetaSpace)或元空间等不同区域,以及如何识别和解决内存泄漏问题。...

    PHP实例开发源码-9gan PHP探针清爽无敌增强版.zip

    6. **数据可视化**:探针的数据显示部分可能涉及到数据可视化,如使用图表库(如Chart.js或Highcharts)来直观展示性能数据。 通过深入研究9gan PHP探针的源码,开发者不仅可以提升PHP编程技能,还能学习到如何处理...

    公司要求实时监控服务器,写个Web的监控系统

    在IT行业中,实时服务器监控是运维工作的重要环节,它能够帮助我们及时发现并解决系统问题,确保服务的稳定运行。为了满足公司的需求,构建一个基于Web的监控系统是非常必要的。这个系统应该具备实时数据采集、可视...

    Lepus数据库企业监控系统 v5.1.gz

    1. **数据库监控**:Lepus系统的核心功能是对企业数据库进行实时监控,包括但不限于性能指标(如CPU使用率、内存占用、I/O负载)、查询效率、事务处理速度等。通过这些数据,可以及时发现并解决系统瓶颈,保障数据库...

Global site tag (gtag.js) - Google Analytics