文档章节

jquery使用不当导致内存泄漏

Adam-Lee
 Adam-Lee
发布于 2014/07/17 12:03
字数 432
阅读 225
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

1、$.extend()的使用不当,内存泄漏

//浅拷贝

$.extend(object1,object2);

//浅拷贝建议直接使用赋值,上面的写成:

object1 = object2;

 

//深拷贝导致IE内存泄漏

$.extend(true,object1,object2);

//轮询的时候发现,用上面的方法,会造成泄漏

//改成下面结构泄漏消除

var object1 = $.extend(true,{},object1,object2);

2、html()内存泄漏

//轮询的时候,每隔5秒调用一次html,导致DOM泄漏,内存增加

$(element).html("hello");

//html用innerHTML代替,泄漏消除

$(element)[0].innerHTML = "hello";

这里要简单理解下jQuery html()和innerHTML的区别,innerHTML是原生方法,写入字符串没有问题,所有浏览器都支持。但是如果写入<script>代码,innerHTML在firefox、chrome等浏览器不能执行写入的脚本代码。

但是jQuery html()支持写入<script>标签,并能执行写入的脚本。

3、重复绑定导致内存泄漏

//jQuery中绑定的一般方法,如果是轮询绑定,绑定前一定要先解除绑定

jQuery.on()

jQuery.bind()      

jQuery.live()

jQuery.delegate()

//解除绑定的方法

jQuery.off() 

jQuery.unbind()

jQuery.undelegate()

4、empty()使用不当,内存泄漏

本想用empty()来清空某个element,但使用后,导致内存泄漏,原因还真不详,也许该去分析下jQuery的源代码了。


© 著作权归作者所有

Adam-Lee
粉丝 50
博文 118
码字总数 166965
作品 0
深圳
程序员
私信 提问
jQuery数据缓存data(name, value)详解及实现

作为一名程序员,一提到“缓存”你很容易联想到“客户端(浏览器缓存)”和“服务器缓存”。客户端缓存是存在浏览者电脑硬盘上的,即浏览器临时文件夹,而服务器缓存是存在服务器内存中,当然...

i33
2013/03/04
370
0
jQuery性能优化

之前,我们减少字节数和请求次数以及加载顺序以使页面加载的更快。如今,我们越来越多的注意到另一个影响网站性能的部分--CPU利用率。使用 jQuery和其他JavaScript框架,使节点选择和DOM操作...

黄平俊
2010/08/11
2K
7
OperaMasks-UI v1.1 正式版发布

OperaMasks UI V1.1 正式版发布了。 下载地址:http://ui.operamasks.org/website/download.html 新特性概览: http://www.operamasks.org/blog/?p=224 示例页面: 此 版本对比之前的v1.0作了...

红薯
2012/03/21
2.3K
10
addEvent.js源码解析

前言: 看两三遍即可。 在看 jQuery 源码时,发现了这段注释: Dean Edwards 的 addEvent.js 库为 jQuery 的事件绑定提供了很多想法,我们就来看下 2005 年的 addEvent.js 。 〇、先复习下 ...

进击的小进进
06/05
0
0
从零实现一个简易的jQuery框架之二—核心思路详解

如何读源码 整体框架甚是复杂,也不易读懂。但是若想要在前端的路上走得更远、更好,研究分析前端的框架无疑是进阶路上必经之路。但是庞大的源码往往让我们不知道从何处开始下手。在很长的时...

余大彬
2018/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

类比思想歪解Java线程

在操作系统的概念里,有内核态,用户态。其实,操作系统的最小执行单位是进程,而进程是分类型的,有两种类型,内核进程,用户进程。 内核进程由操作系统启动时创建,用户进程是由用户程序启...

萧默
50分钟前
2
0
Git推送错误“ [[远程拒绝]主机->主机(分支当前已签出)”)

昨天,我发布了一个有关如何将Git存储库从我的一台计算机克隆到另一台计算机的问题 , 如何从另一台计算机“ git clone”? 。 现在,我可以成功地将Git存储库从源(192.168.1.2)克隆到目标...

javail
今天
4
0
Selenium 4.0 Alpha更新日志

早在2018年8月,整个测试自动化社区就发生了一件重大新闻:Selenium的创始成员Simon Stewart在班加罗尔Selenium会议上正式确认了Selenium 4的发布日期和一些重要更新。 Selenium 4.0 Alpha版...

八音弦
今天
7
0
2、编写程序求Sn=a+aa+aaa+…+aa…aa的值,其中a是1—9之间的一位数字,n表示 a的位数

//编写程序求Sn=a+aa+aaa+…+aa…aa的值,其中a是1-9之间的一位数字, //n表示 a的位数 #include<stdio.h> int main() { int a,n,i,Sn=0,Z=0; printf("please intput a:\n"); scanf("%d",&a......

201905021729吴建森
今天
5
0
Git中的HEAD是什么?

您会看到Git文档说出类似 分支必须在HEAD中完全合并。 但是到底什么是Git HEAD ? #1楼 了解正确答案的一种好方法是运行git reflog HEAD ,您可以获得HEAD所指向的所有位置的历史记录。 #2楼...

技术盛宴
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部