资讯专栏INFORMATION COLUMN

javascript 闭包、内存泄漏与溢出

silencezwm / 1764人阅读

摘要:内存泄漏与内存溢出内存溢出指的是程序向系统申请一定大小内存,而系统不能满足程序的要求就是内存的溢出。内存泄漏指申请的内存一直得不到释放,回收不了。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。

内存泄漏与内存溢出

1.内存溢出:指的是程序向系统申请一定大小内存,而系统不能满足程序的要求就是内存的溢出。
2.内存泄漏:指申请的内存一直得不到释放,GC回收不了。一般在项目中就是,你声明的变量一直保存在内存中,它有值但你把它的引用地址搞丢了一直没法用它,而GC又没法回收这块内存给别的程序使用就叫内存泄漏。

从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积。

闭包

概念:闭包就是闭包!是一种为达到目的变通的一种写法,因为经常用大所以把这种写法取了个名字叫闭包。
作用:取到我原本取不到的变量,并且让这些变量始终在内存中。
因为一直在内存中在IE里容易造成内存泄漏,写的时候注意下就行。

function fn1(){
    var n=1;
}
//我想取到里面的局部变量n
function fn1(){
    var n=1;
    function fn2(){//在加一个fn2当他的子集
        alert(n);
    }

}

但是我在外面还是访问不到那就return出来

function fn1(){
    var n=1;
    function fn2(){//在加一个fn2当他的子集
        alert(n);
    }
return fn2(); //return出来后 他就给 window了所以一直存在内存中
}
fn1();

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86588.html

相关文章

  • javascript 内存泄漏

    摘要:什么是内存泄漏简介,内存,硬盘的关系工作的时候需要从存储器里取数据出来。引发内存泄漏的方式意外的全局变量对未声明变量的处理方式在全局对象上创建该变量的引用即全局对象上的属性,不是变量,因为它能通过删除。这样会造成意外的内存泄漏。 什么是内存泄漏 简介 CPU,内存,硬盘的关系 CPU(Central Processing Unit)工作的时候:  1、需要从存储器里取数据出来。  2、...

    刘永祥 评论0 收藏0
  • JavaScript 究竟是如何工作的?(第二部分)

    摘要:内存泄漏指的是,程序之前需要用到部分内存,而这部分内存在用完之后并没有返回到内存池。基本事件递归调用为什么是单线程的一个线程代表着在同一时间段内可以单独执行的程序部分的数目。 原文地址:How Does JavaScript Really Work? (Part 2) 原文作者:Priyesh Patel showImg(https://segmentfault.com/img...

    Youngs 评论0 收藏0
  • Node.js内存管理和V8垃圾回收机制

    摘要:垃圾回收内存管理实践先通过一个来看看在中进行垃圾回收的过程是怎样的内存泄漏识别在环境里提供了方法用来查看当前进程内存使用情况,单位为字节中保存的进程占用的内存部分,包括代码本身栈堆。 showImg(https://segmentfault.com/img/remote/1460000019894672?w=640&h=426);作者 | 五月君Node.js 技术栈 | https:...

    JowayYoung 评论0 收藏0
  • 2017拼多多前端笔试

    摘要:但是如果一个值不再用到了,引用次数却不为,垃圾回收机制却无法释放这块内存,从而导致内存泄漏。内存泄漏垃圾回收语言的内存泄漏主因是不需要的引用。常见内存泄漏意外的全局变量处理未定义变量的方式比较宽松未定义的变量会在全局对象创建一个新变量。 简答题: settimeout 与 setInterval的区别, 及对他们的内存的分析 区别 setTimeout是在一段时间后调用指定函数(仅一...

    Jioby 评论0 收藏0
  • 2017拼多多前端笔试

    摘要:但是如果一个值不再用到了,引用次数却不为,垃圾回收机制却无法释放这块内存,从而导致内存泄漏。内存泄漏垃圾回收语言的内存泄漏主因是不需要的引用。常见内存泄漏意外的全局变量处理未定义变量的方式比较宽松未定义的变量会在全局对象创建一个新变量。 简答题: settimeout 与 setInterval的区别, 及对他们的内存的分析 区别 setTimeout是在一段时间后调用指定函数(仅一...

    caiyongji 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<