美文网首页
JS的内存空间

JS的内存空间

作者: 小陈wx | 来源:发表于2022-05-12 02:19 被阅读0次

    1.内存空间是什么?

    • 大家都知道我们组装台式机的时候会用到内存条,这个内存条给设备提供了内存空间。
    • 那为什么不直接用硬盘提供的空间当做内存空间呢?因为硬盘读写的速度慢,硬盘提供是长效的读写能力,反之内存条读写的速度极快(比固态硬盘快10倍左右),并且提供的是短效的读写能力,断电以后内存条内的数据会清空,而内存的作用是维持程序运转,需要极快的响应速度,所以选用内存空间来维持设备运行。
    • 当设备开启,首先会吧系统写入到内存空间然后开始运行,打开一个程序,程序会把需要用到的代码填入内存中运行,而且随着程序开启更多的功能,该程序会将提供这部分功能的代码和用到的对象也填入内存空间,所以我们会看到打开一个网页内存占用为100M,当打开10个网页内存占用飙升到1000M。

    盗个图,硬盘速度跟内存速度比起来就像蜗牛一般


    v2-5db9d520556e6e79ea5567a22631dd82_720w.jpg

    2.JS如何使用内存空间?

    • JS将所得的内存空间大致划分为3块:

      1.代码空间:用来存放可执行代码。

      2.栈空间:用来执行代码,在诸多JS相关文章中被称为调用栈,它承载执行上下文,以及上下文中包含的基本类型数据和引用类型数据的引用,空间小,空间连续,而且空间即用即清理,读取速度快,被设计为先进后出结构。

      3.堆空间:用来存放复杂数据,空间大,读取速度慢。

    3.栈空间与堆空间的一些要点:

    • 1.栈空间如何运行(调用栈),首先入栈全局执行上下文,随后根据随可执行函数由上至下依次运行,每当有函数执行则入栈当前函数执行上下文,当该函数执行完毕该函数执行上下文出栈,并销毁其中基本类型数据和引用。
    • 2.闭包,当内部函数保持对其外部函数中变量的引用,则会生成一个名为closure闭包对象,该对象会塞入堆内存之中,直到闭包函数执行完毕,随后被JS垃圾清理器自动清理,假如该闭包函数未执行,则该闭包对象会一直存在,引起内存泄漏。

    盗个图,感谢elab团队😄!!


    v2-522d02f66f7edb9b84b679c446250e77_720w.jpg

    相关文章

      网友评论

          本文标题:JS的内存空间

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