发现有人挺感兴趣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导致内存泄露的情况,可以参考改方法试试。实现原则就是避免对象引用导致无法被释放的情况。
分享到:
相关推荐
他告诉我说,开始是用jquery写的,而且在测试过程中也没有出现问题。但是在后来无意中发现,在页面开的时候久了之后,浏览器资源竟然占用非常高导致内存不足而崩溃了。后来抓包分析发现,每次jquery的Ajax请求都会...
Struts2、Hibernate3、JQuery、Ajax以及Json是Web开发中的重要技术栈,它们各自在Web应用程序中扮演着不同的角色。在这个“三级联动”项目中,这些技术被巧妙地结合在一起,实现了数据的动态交互和展示。 Struts2是...
2. 如果数据量真的非常大,可能需要前端和后端工程师配合调整服务器的超时设置和内存限制,以免在传输过程中因请求超时或者服务器内存溢出导致传输失败。 3. 在某些情况下,除了改变数据的传输方式外,可能还需要...
"jQuery文字溢出显示省略号插件"就是为了解决这个问题而诞生的。它基于一款名为"dotdotdot.js"的JavaScript插件,旨在帮助开发者优雅地处理文字溢出的情况,使长文本在指定区域内以省略号的形式简洁展示。 jQuery是...
在jQuery中,进行Ajax请求时,默认情况下,jQuery并不会自动处理创建的`XMLHttpRequest`(也称作XHR)对象的内存释放,这可能会导致内存溢出的问题,尤其是在长连接或者大量并发请求的情况下。 `XMLHttpRequest`...
此外,还需要注意到项目中大量使用的 Ext 和 Jquery 框架本身存在内存泄漏的问题,需要常常深入到这些框架的源码,解决问题的难度自然提高。 检测内存泄漏的工具和手段确实有限,仅有的两个工具(JavaScript ...
- 为防止文件体积过大导致内存溢出,需要在前端和后端限制文件大小。 - 检查文件类型,防止恶意文件上传。 - 对文件名进行处理,避免路径遍历攻击。 以上就是使用Ajax、jQuery和Java实现带进度条的文件上传功能...
在IT行业中,jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。本文将深入探讨两个与jQuery相关的插件,一个是用于数据加密的`jQuery.md5.js`,另一个是处理文本溢出的`...
在传统的HTTP协议中,一次请求只能发送一个文件,对于大文件,可能会导致浏览器内存溢出或超时。为了解决这个问题,现代浏览器支持了HTML5的File API和FormData对象,这使得我们可以在后台分块上传大文件,同时可以...
它解决了在Ajax请求中下载文件时常见的问题,如无法弹出“保存文件”对话框或文件下载失败。 2. **核心功能** - **安全的文件下载**:通过创建隐藏的IFrame和POST请求,避免了由于同源策略导致的下载问题。 - **...
1. **分块上传**:对于非常大的文件,一次性上传可能会导致浏览器内存溢出或网络拥塞。因此,`jQuery Large File Upload` 可能采用了分块上传策略,将大文件分割成小块,逐个上传。这样可以确保上传过程的稳定性和...
例如,在电商网站、金融交易平台等高并发应用场景中,通过对服务器内存的持续监控,可以及时发现并解决性能问题,确保系统的稳定运行。 此外,该工具还可以作为教育和培训资源,帮助初学者理解如何使用Ajax进行异步...
jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互。通过使用jQuery,开发者可以更高效地编写JavaScript代码,减少跨浏览器的兼容性问题。 在jQuery-easyAccordion中,主要有以下几个...
超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...
这个程序可能用于实时监测服务器的内存使用情况,帮助开发者或系统管理员优化服务器性能,防止因内存溢出等问题导致的服务中断。 【标签解析】 "jsp 源码" 这个标签明确了项目的主要技术和资源类型。JSP是Java的一...
在实现图片动态加载时,我们主要利用jQuery的事件监听和AJAX异步请求功能。 1. **基础结构**:创建一个HTML页面,包含一个用于展示图片的容器,例如`<div id="waterfall"></div>`。这个容器可以是瀑布流布局,便于...
为了解决这个问题,开发者通常会采用Ajax(Asynchronous JavaScript and XML)技术来实现无刷新的文件上传,并通过JavaScript或jQuery库提供进度条显示,提升用户体验。本项目利用ASP(Active Server Pages)服务器...
在Windows操作系统环境下,特别是XP/Vista/7/2003/2008版本中,使用Visual Studio 2005或2008作为开发环境,结合.NET Framework 2.0以及*** AJAX 1.0,可以开发出满足需求的解决方案。这个解决方案的核心在于利用...