美文网首页
Javascript基础进阶(四)JS内存释放(垃圾回收)

Javascript基础进阶(四)JS内存释放(垃圾回收)

作者: js_冠荣 | 来源:发表于2018-08-01 20:25 被阅读0次

内存释放(垃圾回收)

1.堆内存

对象数据类型或者函数数据类型在定义的时候都会开辟一个堆内存空间,堆内存有一个引用地址,如果外面有变量指向这个地址,那这个内存就被占用了,则无法被销毁。

如果把所有引用他地址的变量赋值为null,则堆内存释放/销毁。

2.栈内存

栈内存可以理解为作用域。

1.全局作用域

只有当页面关闭的时候全局作用域才会销毁。

2.私有作用域(函数执行会产生私有作用域)

一般情况下,函数执行会形成一个新的私有作用域,当私有作用域中的代码执行完成之后,我们当前的作用域会主动进行释放和销毁。

内存泄漏

JavaScript中最常用的垃圾收集方式是标记清除(mark-and-sweep)。当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为“进入环境”。从逻辑上讲,永远不能释放进入环境的变量所占的内存,因为只要执行流进入相应的环境,就可能用到它们。而当变量离开环境时,这将其 标记为“离开环境”。

虽然JavaScript 会自动垃圾收集,但是如果我们的代码写法不当,会让变量一直处于“进入环境”的状态,无法被回收。
1.全局变量引起的内存泄漏

function leaks(){  
    leak = 'xxxxxx';//leak 成为一个全局变量,不会被回收
}

2.闭包引起的内存泄漏

var leaks = (function(){  
    var leak = 'xxxxxx';// 被闭包所引用,不会被回收
    return function(){
        console.log(leak);
    }
})()

觉得写的不错的小伙伴点赞加关注哦! (=・ω・=)

相关文章

  • Javascript基础进阶(四)JS内存释放(垃圾回收)

    内存释放(垃圾回收) 1.堆内存 对象数据类型或者函数数据类型在定义的时候都会开辟一个堆内存空间,堆内存有一个引用...

  • JavaScript内存管理

    JS内存回收 JS 有自动垃圾回收机制,就是找出那些不再继续使用的值,然后释放其占用的内存。 垃圾回收算法: 引用...

  • JavaScript中的垃圾回收

    垃圾回收概述 JavaScript具有垃圾自动回收机制 原理是:找出不再使用的变量,释放其内存空间,为此垃圾回收器...

  • JavaScript垃圾回收机制

    JavaScript具有自动垃圾回收机制,回收原理很简单:找到那些不再使用的变量,然后释放其内存空间,垃圾回收器会...

  • JavaScript 性能优化

    垃圾回收 内存管理 JavaScript 没有提供操作内存的 API,一切内存操作都是自动的。 申请 使用 释放 ...

  • 2018-10-13

    浅谈浏览器的垃圾回收机制和内存泄露 JavaScript使用垃圾回收机制来自动管理内存。 JS的回收机制分两种:1...

  • 零散专题34 JavaScript的垃圾回收机制

    手动回收? JavaScript在创建变量时自动进行了内存分配,并且在不使用时自动释放。释放的过程叫做垃圾回收。 ...

  • javascript中的内存泄漏

    垃圾回收机制 JavaScript具有自动垃圾回收机制,来判断哪些变量不再需要,释放他所占的内存。 1. 变量的生...

  • JavaScript中的垃圾回收和内存泄漏

    JavaScript中的垃圾回收和内存泄漏 摘要: JS内存管理。 作者:浪里行舟 Fundebug经授权转载,版...

  • JS中的基本数据类型与所在内存空间那些事

    一、内存空间 为了便于理解,我们暂且先将Js的内存分为栈内存和堆内存。 JavaScript具有垃圾自动回收机制,...

网友评论

      本文标题:Javascript基础进阶(四)JS内存释放(垃圾回收)

      本文链接:https://www.haomeiwen.com/subject/ejltvftx.html