垃圾回收

231 阅读1分钟

垃圾回收针对为堆来说的

  • 新生代
    • from区域(一半的新生代内存空间) 刚开始所有的复杂对象都会存储在from区域,当有新的对象存储进来from区域的时候,发现内存不足以存储该对象,然后就会开始垃圾回收,然后把标记了没用的数据清除掉之后,把剩下的对象复制到to区域,然后清空from区域。最后清空的from区域变为to区域,保存有用对象的to区域变为from区域。(牺牲空间,设计to、from两个区域来实现)
    • to区域
  • 老生代(老生代都是由新生代晋升而来)
    • 当新生代的被copy过一次,并且占用空间占了25%以上,然后就会晋升为老生代
    • 标记清除(旧):首先会进行广度扫描,然后获取到那些被引用了然后标记 起来,最后进行回收没有标记的内存。
    • 标记整理(新,先整理后清除):也是会经过广度扫描,然后标记被被gc节点有所引用的,然后新进行整理,最后再清除。因为整理的时候就可以把没用的内存给清除掉,最后就会减少清除内存的个数。为什么要整理,因为碎片

image.png

改变v8限制的2g内存

image.png