{"componentChunkName":"component---src-templates-blog-post-js","path":"/learn-browser/gc/","result":{"data":{"markdownRemark":{"html":"<h3>垃圾回收</h3>\n<ul>\n<li>新生代（存放比较小，很快被回收）[副垃圾回收器]\n<ul>\n<li>经历两次新生代就放进老生区（对象晋升策略）</li>\n<li>Scavenge 算法来处理。是把新生代空间对半划分为两个区域，一半是对象区域，一半是空闲区域，回收时直接把对象区域可用的对象挪动到空闲区，原对象区域之间清空，循环往复</li>\n<li>新加入的对象都会存放到对象区域，当对象区域快被写满时，就需要执行一次垃圾清理操作。</li>\n</ul>\n</li>\n<li>老生代\n<ul>\n<li>标记 - 清除 -整理</li>\n<li>清除算法里的是一样的，但后续步骤不是直接对可回收对象进行清理，而是让所有存活的对象都向一端移动，然后直接清理掉端边界以外的内存</li>\n<li>为了降低老生代的垃圾回收而造成的卡顿，V8 将标记过程分为一个个的子标记过程，同时让垃圾回收标记和 JavaScript 应用逻辑交替进行，直到标记阶段完成，我们把这个算法称为增量标记（Incremental Marking）算法。</li>\n</ul>\n</li>\n</ul>","timeToRead":1,"frontmatter":{"title":"","date":null,"spoiler":null},"fields":{"slug":"/learn-browser/gc/"}}},"pageContext":{"slug":"/learn-browser/gc/","previous":{"fields":{"slug":"/learn-browser/exe/"},"frontmatter":{"title":""}},"next":{"fields":{"slug":"/pnpm/"},"frontmatter":{"title":"Why should we use pnpm?"}}}},"staticQueryHashes":["3649515864","63159454"]}