`
xianbin
  • 浏览: 215214 次
  • 来自: ...
社区版块
存档分类
最新评论

再议JQuery中Ajax内存溢出问题。

阅读更多
发现有人挺感兴趣Javascript中的内存溢出,本人经验发现有在使用Ajax的时候,很容易出现内存溢出问题。

这个问题首先由使用jqPlot引发,当使用这个图形插件动态绘制图形的时候,浏览器会出现内存不断递增的情况,后来使用很多办法,但是效果都不理想。最后猜测可能和Ajax使用上有关。

请看下面代码:
	$.ajax({
		url : 'data_url',
		dataType : "json",
		success : function(data) {
			var isEmpty = isBarChartDataEmpty(data);
			if (isEmpty)
				return;

			引用data绘制图形
			……
		},
		error : function(XHRequest, status, data) {
			XHRequest.abort();
			clearPlotChart(g_typePlot);
			typeChartTimer();
		}
	});


当我们在通过Ajax返回json对象时,如果对象里面还有数组,并且直接给其他插件或者全局代码使用后,没有得到释放。

解决的办法就是使用slice()方法将Ajax返回的JSON对象中的数组复制出来使用,以避免对象引用而无法释放的问题。

	$.ajax({
		url : 'data_url',
		dataType : "json",
		success : function(data) {
			var isEmpty = isBarChartDataEmpty(data);
			if (isEmpty)
				return;

			var chartTicks = data.ticks.slice(0);
			var chartData = data.chartData.slice(0);

		},
		error : function(XHRequest, status, data) {
			XHRequest.abort();
			clearPlotChart(g_typePlot);
			typeChartTimer();
		}
	});


如果有遇到Ajax导致内存泄露的情况,可以参考改方法试试。实现原则就是避免对象引用导致无法被释放的情况。
0
0
分享到:
评论
4 楼 120183228 2013-01-29  
不是  你复制出来一份不也需要释放吗?  你在引用端没释放  你怎么传进去不都会内存溢出吗?
3 楼 xsgkaka 2013-01-29  
ajax 为什么取回的数组会内存溢出 这个原因 楼主能不能解释解释啊
2 楼 xianbin 2013-01-29  
it爱 写道
[url][img][list]
[*]
引用
[u][i][b][/b][/i][/u]

[/list][/img][/url]


?  什么问题?
1 楼 it爱 2013-01-29  
[url][img][list]
[*]
引用
[u][i][b][/b][/i][/u]

[/list][/img][/url]

相关推荐

    使用jQuery Ajax功能时需要注意的一个问题(内存溢出)

    他告诉我说,开始是用jquery写的,而且在测试过程中也没有出现问题。但是在后来无意中发现,在页面开的时候久了之后,浏览器资源竟然占用非常高导致内存不足而崩溃了。后来抓包分析发现,每次jquery的Ajax请求都会...

    Struts2+hibernate3+JQuery+ajax+json三级联动

    Struts2、Hibernate3、JQuery、Ajax以及Json是Web开发中的重要技术栈,它们各自在Web应用程序中扮演着不同的角色。在这个“三级联动”项目中,这些技术被巧妙地结合在一起,实现了数据的动态交互和展示。 Struts2是...

    JQuery中使用ajax传输超大数据的解决方法

    2. 如果数据量真的非常大,可能需要前端和后端工程师配合调整服务器的超时设置和内存限制,以免在传输过程中因请求超时或者服务器内存溢出导致传输失败。 3. 在某些情况下,除了改变数据的传输方式外,可能还需要...

    jQuery文字溢出显示省略号插件.zip

    "jQuery文字溢出显示省略号插件"就是为了解决这个问题而诞生的。它基于一款名为"dotdotdot.js"的JavaScript插件,旨在帮助开发者优雅地处理文字溢出的情况,使长文本在指定区域内以省略号的形式简洁展示。 jQuery是...

    jquery不会自动回收xmlHttpRequest对象 导致了内存溢出

    在jQuery中,进行Ajax请求时,默认情况下,jQuery并不会自动处理创建的`XMLHttpRequest`(也称作XHR)对象的内存释放,这可能会导致内存溢出的问题,尤其是在长连接或者大量并发请求的情况下。 `XMLHttpRequest`...

    Iframe内存泄露分析

    此外,还需要注意到项目中大量使用的 Ext 和 Jquery 框架本身存在内存泄漏的问题,需要常常深入到这些框架的源码,解决问题的难度自然提高。 检测内存泄漏的工具和手段确实有限,仅有的两个工具(JavaScript ...

    Java中使用Ajax、Jquery带进度条文件上传.

    - 为防止文件体积过大导致内存溢出,需要在前端和后端限制文件大小。 - 检查文件类型,防止恶意文件上传。 - 对文件名进行处理,避免路径遍历攻击。 以上就是使用Ajax、jQuery和Java实现带进度条的文件上传功能...

    jquery加密插件和文本溢出处理插件

    在IT行业中,jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。本文将深入探讨两个与jQuery相关的插件,一个是用于数据加密的`jQuery.md5.js`,另一个是处理文本溢出的`...

    jquery 大文件上传

    在传统的HTTP协议中,一次请求只能发送一个文件,对于大文件,可能会导致浏览器内存溢出或超时。为了解决这个问题,现代浏览器支持了HTML5的File API和FormData对象,这使得我们可以在后台分块上传大文件,同时可以...

    jquery.fileDownload-1.4.5.zip

    它解决了在Ajax请求中下载文件时常见的问题,如无法弹出“保存文件”对话框或文件下载失败。 2. **核心功能** - **安全的文件下载**:通过创建隐藏的IFrame和POST请求,避免了由于同源策略导致的下载问题。 - **...

    Jquery Large File Upload (Jquery实现大文件上传).rar

    1. **分块上传**:对于非常大的文件,一次性上传可能会导致浏览器内存溢出或网络拥塞。因此,`jQuery Large File Upload` 可能采用了分块上传策略,将大文件分割成小块,逐个上传。这样可以确保上传过程的稳定性和...

    jsp源码其他类别动态显示JSP服务器内存的Ajax程序图像版-systemjc

    例如,在电商网站、金融交易平台等高并发应用场景中,通过对服务器内存的持续监控,可以及时发现并解决性能问题,确保系统的稳定运行。 此外,该工具还可以作为教育和培训资源,帮助初学者理解如何使用Ajax进行异步...

    基于JQuery横向跑马灯jQuery-easyAccordion

    jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互。通过使用jQuery,开发者可以更高效地编写JavaScript代码,减少跨浏览器的兼容性问题。 在jQuery-easyAccordion中,主要有以下几个...

    超实用的jQuery代码段

    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...

    JSP源码——检测JSP服务器内存的Ajax程序_systemjc.zip

    这个程序可能用于实时监测服务器的内存使用情况,帮助开发者或系统管理员优化服务器性能,防止因内存溢出等问题导致的服务中断。 【标签解析】 "jsp 源码" 这个标签明确了项目的主要技术和资源类型。JSP是Java的一...

    jQuery实现图片动态加载效果

    在实现图片动态加载时,我们主要利用jQuery的事件监听和AJAX异步请求功能。 1. **基础结构**:创建一个HTML页面,包含一个用于展示图片的容器,例如`<div id="waterfall"></div>`。这个容器可以是瀑布流布局,便于...

    asp+ajax做的无刷新文件上传带进度条

    为了解决这个问题,开发者通常会采用Ajax(Asynchronous JavaScript and XML)技术来实现无刷新的文件上传,并通过JavaScript或jQuery库提供进度条显示,提升用户体验。本项目利用ASP(Active Server Pages)服务器...

    使用JQUERY Tabs插件宿主IFRAMES

    在Windows操作系统环境下,特别是XP/Vista/7/2003/2008版本中,使用Visual Studio 2005或2008作为开发环境,结合.NET Framework 2.0以及*** AJAX 1.0,可以开发出满足需求的解决方案。这个解决方案的核心在于利用...

Global site tag (gtag.js) - Google Analytics