V8引擎系列(4):v8相关代码优化和内存泄漏

729 阅读1分钟

本文是系列文章第四篇,详情见第一篇

代码优化要点

这里是基于前文对v8的介绍总结的要点:

  1. 按特定顺序添加对象从而共用Shape
  2. 在实例化后动态添加属性会修改对应Shape,因此要在构造函数中添加。
  3. 不要修改array的property attribute,否则需要另外用字典保存对应元素
  4. 修改原型链会造成ValidityCell,乃至对应inline cache无效,如需要应在其他代码执行前修改
  5. 防止接下来的内存泄漏

内存泄漏

内存泄漏指的是堆中的一块内存,虽然不需要了但仍然没能释放。 大量的内存泄漏会造成应用甚至系统没有充足的内存使用而变慢甚至崩溃。

由于现代浏览器不再使用引用计数法gc,而是标记清除法,造成内存泄漏的方法基本就是全局变量,使用后要置为null。

循环引用、闭包等场景只要避免全局引用就不会造成内存泄漏。