首页 > 其他分享 >老生代

老生代

时间:2023-10-18 13:23:53浏览次数:19  
标签:标记 对象 清除 Mark 内存 老生

 

 

 

老生代内存是用于保存生命周期较长或常驻内存的对象,占用的内存较多。Chrome V8和Node.js的老生代内存空间都很大,因此它们的垃圾回收机制采用了Mark-Sweep和Mark-Compact的结合体,
主要采用Mark-Sweep。当老生代空间不足以分配从新生代晋升过来的对象时,才使用Mark-Compact。 1. Mark-Sweep(标记清除) - 标记:在标记阶段需要遍历老生代堆中的所有对象,并标记那些活着的对象,然后进入清除阶段。 - 清除:在清除阶段,Chrome V8只清除没有被标记的对象。由于标记清除只清除死亡对象,而死亡对象在老生代中占用的比例通常较小,因此其效率还是比较高的。
可以想象你在一筐苹果中挑出两三个烂苹果,还是很快的,至少比从一筐苹果中挑出半筐烂苹果要快得多。 2. Mark-Compact(标记整理) 在标记清除时,容易产生内存碎片的问题。所以Mark-Compact在标记清除的基础上进行修改,在清除的时候让它们变得紧缩。
这相当于在清除的时候,让活着的剩余对象尽可能往内存区域的前面靠,直到内存区域前排全部排满,而后部区域是空的。标记整理的过程涉及内存区域的紧缩,所以其效率其实比标记清除要低。不过其优势是不会产生内存碎片。 3. 惰性清理 在标记时,哪些对象是死的,哪些对象是活的,Chrome V8已经掌握了。但是清理释放是需要开销的,所以Chrome V8并不急着去清理,而是延迟进行。垃圾回收器可以根据自身需要来清理死掉的对象。

 

标签:标记,对象,清除,Mark,内存,老生
From: https://www.cnblogs.com/angdh/p/17771844.html

相关文章

  • 老生常谈:值类型 V.S. 引用类型
    我在面试的时候经常会问一个问题:“谈谈值类型和引用的区别”。对于这个问题,绝大部分人都只会给我两个简洁的答案:“值类型分配在栈中,引用类型分配在堆中”,“在默认情况下,值类型参数传值(拷贝),引用类型参数传引用”。其实这个问题有很大的发挥空间,如果能够从内存布局、GC、互操作、跨A......
  • 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
    在Java虚拟机中,主要存在两个代(Generation)的垃圾回收器:新生代(YoungGeneration)垃圾回收器和老年代(OldGeneration)垃圾回收器。它们的作用和区别如下:新生代垃圾回收器:新生代是存放新创建的对象的内存区域,一般占整个堆内存的较小部分。新生代垃圾回收器主要负责回收新生代内存区域中的......
  • IPv4 地址--老生常谈
    IPv4地址,由32位二进制数组成,为了便于被识别,常以十进制数表示。而IP地址常与网络掩码搭配使用,对网络掩码的理解,是掌握IPv4 地址技术的关键。网络掩码也是由32位二进制数组成,并且有一个规律,是由连续的1和连续的0组成,至于多少位1 多少位0,视具体情形而定。这一点非常重要,就是......
  • 老生常谈React的diff算法原理-面试版
    第一次发文章notonly(虽然)版式可能有点烂butalso(但是)最后赋有手稿研究finally看完他你有收获diff算法:对于update的组件,他会将当前组件与该组件在上次更新是对应的......
  • 老生常谈React的diff算法原理-面试版
    第一次发文章notonly(虽然)版式可能有点烂butalso(但是)最后赋有手稿研究finally看完他你有收获diff算法:对于update的组件,他会将当前组件与该组件在上次更新是对应的......
  • 老生常谈React的diff算法原理-面试版
    第一次发文章notonly(虽然)版式可能有点烂butalso(但是)最后赋有手稿研究finally看完他你有收获diff算法:对于update的组件,他会将当前组件与该组件在上次更新是对应的......
  • 老生常谈React的diff算法原理-面试版
    第一次发文章notonly(虽然)版式可能有点烂butalso(但是)最后赋有手稿研究finally看完他你有收获diff算法:对于update的组件,他会将当前组件与该组件在上次更新是对应的......
  • 老生常谈-FFmpeg 的编译问题轻松搞定
    前几天发了一篇​​FFmpeg调用AndroidMediaCodec进行硬解码​​的文章,这里面的技术点不算太难,也还是调用FFmpeg的常用接口操作,但重点在于FFmpeg的版本选择以及编......
  • 老生常谈React的diff算法原理-面试版
    第一次发文章notonly(虽然)版式可能有点烂butalso(但是)最后赋有手稿研究finally看完他你有收获diff算法:对于update的组件,他会将当前组件与该组件在上次更新是对应的......
  • 浏览器垃圾回收机制:栈垃圾回收、堆垃圾回收、新生区老生区、Scavenge算法、标记-清除
    浏览器垃圾回收机制根据数据的存储方式分为栈垃圾回收和堆垃圾回收。栈垃圾回收的方式非常简便,当一个函数执行结束之后,JavaScript引擎会通过向下移动ESP来销毁该函数保......