美文网首页
内存存储与垃圾回收机制

内存存储与垃圾回收机制

作者: 9吧和9说9话 | 来源:发表于2020-02-24 14:40 被阅读0次

javascript中的内存模型

javascript 内存模型 图片来源:极客时间
  1. 一般而言,原始数据类型都是存储在栈空间中,引用类型存储在堆空间中。
  2. 栈空间相对而言很小,堆空间可以存储大量数据。
  3. 闭包会存储在堆中,这也是为啥栈执行过后,还能够访问到数据的原因。

javascript的自动垃圾回收机制

  1. 针对栈中的数据,通过推出调用栈(移动内部指针)标记了推出的调用栈已经无效,后面再分配的话 就会进行覆盖。
  2. 针对堆中的数据。

代际假说

  1. 大部分对象在内存中存在的时间很短,简单来说,就是很多对象一经分配内存,很快就变得不可访问;
  2. 不死的对象,会活得更久。

基于上面的假说:

  1. V8 把堆分成两个区域:新生代和老生代, 分别存储生存时间很短的数据和生存时间很久的数据

  2. 新生代区 空间很小 1~8M, 老生代区很大。

  3. 针对两个区域进行了不同的垃圾回收机制:副垃圾回收器,主要负责新生代的垃圾回收; 主垃圾回收器,主要负责老生代的垃圾回收。

  4. 副垃圾回收机制: Scavenge 算法;将新生代分为两个区域,一半对象区和一半空闲区。对象区快满了的时候,进行一次角色对换和复制操作(同时会进行内存碎片整理)


    新生区要划分为对象区域和空闲区域 图片来源:极客时间
  5. 主垃圾回收机制:标记-清除or 标记-整理。


    标记清除过程 图片来源:极客时间
    标记整理过程 图片来源:极客时间
  6. 垃圾回收会占用主线程,阻塞页面。所以主垃圾回收机制把标记-整理的过程,分为多个子过程和js应用逻辑交替进行。


    增量标记 图片来源:极客时间

相关文章

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

  • 2019-01-14 day16 !!!python内存管理

    内存管理 1.数据的存储 2.内存释放(垃圾回收机制)原理:

  • JS垃圾回收机制(内存问题)

    垃圾收集机制理解 垃圾收集机制:释放无用的数据,回收内存。 垃圾收集机制分类:1)自动回收 2)手动回收 垃圾收集...

  • 对 Java 内存的一些理解-[Android_YangKe]

    Java 垃圾回收机制优点 Java 内存模型 什么是内存抖动 什么是内存泄漏 垃圾回收机制常见算法 Java 垃...

  • 内存存储与垃圾回收机制

    javascript中的内存模型 一般而言,原始数据类型都是存储在栈空间中,引用类型存储在堆空间中。 栈空间相对而...

  • python拾遗7 - 垃圾回收

    垃圾回收机制 相比 C++ 的手动回收内存,python 的垃圾回收机制可谓是省心省力,判断是否回收一块内存,主要...

  • PHP进阶学习之垃圾回收机制详解

    一、概念 垃圾回收机制是一种动态存储分配的方案。它会自动释放程序不再需要的已分配的内存块。垃圾回收机制可以让程序员...

  • 2018-10-13

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

  • Android图片缓存及缓存算法(Universal-Image

    内存缓存 缓存与内存回收机制有关,java中有四种与垃圾回收(gc)有关的引用:强引用(StrongReferen...

  • try catch finally

    java的垃圾回收机制不会回收任何的物理资源,垃圾回收机制只回收堆内存中对象所占用的内存 当程序执行try块,ca...

网友评论

      本文标题:内存存储与垃圾回收机制

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