jqPlot是一个十分强大、功能丰富的图表插件,能够显示走势图、柱形图等常用的图表类型,相信国内用的人很多。
大家在使用jqPlot动态更新图表时,也许会碰到过在IE中出现内存溢出的问题,下面我们来看看集中动态更新jqPlot图表的方式:
方式一:通过重建图表实现动态显示。
var series = [{'test'}];
var axes = {
xaxis : {
renderer : $.jqplot.CategoryAxisRenderer,
ticks : []
},
yaxis : {
min : 0,
max : 10,
tickInterval : 2
}
};
var plotConfig = createBarChartOptions(axes, series);
resizeGlobalMonitorChartContainer(containerId);
var plot = $.jqplot(g_channelDivId, chartData, plotConfig);
实际上我们通过重复的创建图表,确实可以实现动态更新,不过在IE下,我们会发现内存增长很厉害,起初,通过尝试在重新创建图表时,提前销毁旧的图表来释放内存:
/**
* 将plot图表从容器中销毁。
*
* @param containerId
* 容器ID。
* @param plot
* 在容器中的图表。
*/
function releasePlotChart(containerId, plot) {
if (plot) {
plot.destroy();
var elementId = '#' + containerId;
$(elementId).unbind(); // for iexplorer
$(elementId).empty();
plot = null;
}
}
当我们观察内存变化的时候,会发现销毁图表时内存减少了,但是重建之后,内存会比原来多出一些,一定时间以后,内存就会不断的增加,最后导致内存溢出。
方式二:通过动态数据加载,重绘实现。
/**
* 重绘plot图表。
*
* @param containerId
* 容器ID。
* @param chartData
* 图表数据。
* @param plotConfig
* 图表配置信息。
* @returns 返回重绘后的图表对象。
*/
function replotChart(plot, chartData) {
setChartDataToPlot(plot, chartData);
plot.replot({
resetAxes : true
});
return plot;
}
/**
* 将最新的数据设置到plot图表中。
*
* @param plot
* @param chartData
*/
function setChartDataToPlot(plot, chartData) {
for ( var i = 0; i < plot.series.length; i++) {
for ( var j = 0; j < plot.series[i].data.length; j++) {
try {
plot.series[i].data[j][1] = chartData[i][j];
} catch (e) {
}
}
}
}
通过运用这种方式,再次观察内存变化,会发现内存溢出问题已经不存在了。
从中我们发现,只要重建Plot图表,内存就会出现递增的现象,因此,当我们需要切换图表的时候,最好将原来的图表隐藏起来,当再次需要显示的时候,再恢复显示,从而避免重复创建图表,从而导致内存溢出。
分享到:
相关推荐
然而,当处理大数据量的Excel文件时,POI可能会导致内存溢出(Out of Memory, OOM),因为默认情况下它会将整个工作簿加载到内存中。为了防止这种问题,我们需要采用优化策略来高效地处理大量数据。 1. **分块读取*...
在编程领域,内存管理是至关重要的,特别是在处理大文件时,如何有效防止内存溢出是开发者需要关注的核心问题。易语言是一种以中文编程为特色的编程环境,它为初学者提供了友好的界面和易于理解的语法。在这个场景下...
总结来说,易语言防止文件内存溢出的关键在于分块读取和及时释放内存,通过“读入子程序”实现这一目标。在编程实践中,应结合错误处理、数据结构优化等策略,以确保程序的稳定性和效率。通过深入理解这些知识点并...
下面将详细探讨如何解决phpExcel导出大量数据时出现的内存溢出问题。 首先,需要了解phpExcel在内存使用上的机制。默认情况下,PHPExcel使用内存来存储单元格信息。这意味着,如果一次性读取或写入大量数据,就很...
加载大图片时如何防止内存溢出 在 Android 系统中,加载大图片时经常会出现内存溢出的问题,这是因为 Android 系统给图片分配的内存只有 8M,当加载大量图片时,很容易超出这个限制,导致 OOM(Out of Memory)错误...
根据这个设计方案,做了详细的实现,经项目验证,Excel文件20W条数据不成问题,因为Excel解析是我自己原创的行级处理器,不会一次性生成很多对象,因此不存在内存溢出现象,只要excel文件放得下,有多少记录都没问题...
理解并防止Android应用中的内存溢出是优化应用性能的关键环节。以下是对Android防止内存溢出的深入浅析: 1. **Android内存管理机制** - **Dalvik/ART虚拟机**:Android系统使用Dalvik或ART虚拟机执行应用程序,...
然而,在处理大数据集时,如果不注意细节,很容易遇到内存溢出的问题。本文将重点讨论如何在MySQL、SQL Server以及Oracle三种不同的数据库环境下,通过合理配置和优化策略来避免内存溢出。 #### 一、理解内存溢出的...
在Java开发中,当面临大批量数据导出到Excel文件时,可能会遇到内存溢出的问题。这是因为Excel文件格式本身的设计,以及Java默认处理大数据的方式,可能导致内存占用过高,尤其是在一次性加载大量数据到内存中进行...
在“防止内存溢出_jar文件_”这个主题中,我们将深入探讨如何管理和优化Java应用程序内存设置,以避免运行时的内存溢出问题,特别是在运行如《我的世界》这样的大型游戏或应用时。 1. **内存溢出概述** 内存溢出...
在处理大数据时,应该使用 Stream 的方式,而不是把数据读入到内存中,以免内存溢出。 5、把某个对象放到了一个 Set/List/Map 里面,用完了没有尽快释放。 在使用集合时,应该及时释放资源,以免内存溢出。 6、...
内存溢出配置是IT行业中,尤其是在Java应用开发与运维领域中的一个重要话题,它涉及到系统资源管理、性能调优以及故障排查等多个方面。标题与描述中重复提到“内存溢出配置”,这表明了对这一主题的关注与重视。接...
1. **大量数据处理**:当程序需要处理的数据量远远超过可用内存容量时,容易引发内存溢出。 2. **递归调用**:无限或过深的递归调用也会迅速耗尽栈内存,导致内存溢出。 3. **配置不当**:服务器或虚拟机的内存...
内存溢出问题是参加kaggle比赛或者做大数据量实验的第一个拦路虎。 以前做的练手小项目导致新手产生一个惯性思维——读取训练集图片的时候把所有图读到内存中,然后分批训练。 其实这是有问题的,很容易导致OOM。...
绝对原创,这是我在项目中解决大数据Excel导入时内存溢出问题而编写的Excel行级解析器。同时支持Excel-2003和Excel-2007,excel-2003解析采用poi的eventusermodel模式实现,2007采用xmlreader实现,经项目验证,...
本文将深入浅谈如何防止Android应用程序中的内存溢出。 首先,我们需要理解Android应用的内存管理机制。Android系统采用垃圾回收(Garbage Collection, GC)机制来自动释放不再使用的对象所占用的内存。当一个对象...
本篇文章将深入探讨如何在ListView中加载网络图片,并提供策略防止内存溢出。 首先,我们需要理解内存溢出的原因。当一个Android应用分配的内存超过系统允许的最大限制时,就会发生内存溢出。在ListView中加载网络...
在Android开发中,防止内存溢出是一个至关重要的任务,因为Android设备的内存资源相对有限,尤其是在Dalvik虚拟机中,其最大堆大小通常只有16MB。本文将深入探讨Android平台上的内存管理机制,以及如何避免内存泄露...
### 内存溢出解决 #### 背景与概念 在Java开发中,内存管理是确保应用程序稳定运行的关键因素之一。当程序运行时分配给它的内存空间不足以支撑其正常运行时,就会出现“内存溢出”(Out of Memory Error,简称OOM...