js内存泄露的几种情况

来源:互联网 发布:声音编辑软件中文版 编辑:程序博客网 时间:2024/06/05 00:28

js内存泄露-----之所以造成内存泄露----js的自动垃圾回收机制

内存泄露是指一块被分配的内存  既不能被回收也不能被利用的尴尬  

那造成内存泄露的常见情况   

1:闭包  滥用闭包   因为闭包中的变量会保存在内存中 需要手动清除

2:dom元素


-------------------------------------------------------------------------------------------

js事件委托 也叫事件代理

事件委托的原理---委托他们的父级代为执行

事件委托是利用事件的冒泡原理来实现的,何为事件冒泡呢?就是事件从最深的节点开始,然后逐步向上传播事件,举个例子:页面上有这么一个节点树,div>ul>li>a;比如给最里面的a加一个click点击事件,那么这个事件就会一层一层的往外执行,执行顺序a>li>ul>div,有这样一个机制,那么我们给最外面的div加点击事件,那么里面的ul,li,a做点击事件的时候,都会冒泡到最外层的div上,所以都会触发,这就是事件委托,委托它们父级代为执行事件。


-----------------------------------------------

js同步 异步  阻塞   非阻塞   单线程  多线程


js是单线程的----主要用途与用户交互以及操做dom

正是因为有了回调函数 我们才能达到非阻塞的目的  非阻塞就是一直停不下来 停不下来

console.log("程序时间:"+newDate().getTime());

setTimeout(function () {console.log("暂停一秒:"+newDate().getTime());},1000);

console.log('这是暂停一秒之后的时间:'+newDate().getTime());



---------------------------------------------------------------------

node事件驱动理解

二、事件驱动模型

1.在Node.js中有一个事件队列,每个任务都会放入事件队列中,都会留下处理结果的回调函数,事件循环线程(个人感觉有点类似ios中的RunLoop)处理事件队列中的任务,直到回调函数不再存在。

2. 在无阻塞的情况下,作为一个带有回调的函数被放入事件队列中,事件循环线程中被提取并执行。

3.当执行过程中遇到I/O阻塞(读取文件、查询数据库、请求套接字、访问远程服务等)时,事件循环线程不会停下等待结果,转而继续执行队列中的下一个任务,不会在事件循环线程中执行。在函数执行时,Node.js在事件队列中放置回调函数,它的顺序根据函数的完成快慢决定。


原创粉丝点击