这些涡轮风扇内存区域是什么意思?
What do these turbofan memory zones mean?
我在玩 V8 引擎时偶然发现了 zone stats tool。我了解区域内存概念,但区域统计内存中的这些不同区域是什么?
当我将跟踪区域内存日志上传到其中时,我看到有用于涡轮风扇的区域:
- 图区
- 教学区
- pipeline-compilation-job-zone
- 注册分配区
我知道编译工作区是用来编译的(也许?如果我错了请纠正我),但其他区域是什么?
(此处为 V8 开发人员。)由于 Turbofan 是一个编译器,因此它使用的所有区域都用于编译。
它使用多个区域,以便之后可以释放仅短时间需要的临时数据,而主区域会一直保留到整个编译工作完成。这对于寄存器分配器使用的“register-allocation-zone”最为明显。
我不确定其他区域之间的区别是什么,老实说,我认为这不是特别重要:如果您专门致力于减少 Turbofan 的峰值内存消耗,那么您可能已经知道(或者可以通过阅读一些代码轻松找出);否则,您无需关心。特定区域集也可能随时更改。作为一名 JavaScript 开发者,这些编译器内部机制绝对不会让你担心。
我在玩 V8 引擎时偶然发现了 zone stats tool。我了解区域内存概念,但区域统计内存中的这些不同区域是什么?
当我将跟踪区域内存日志上传到其中时,我看到有用于涡轮风扇的区域:
- 图区
- 教学区
- pipeline-compilation-job-zone
- 注册分配区
我知道编译工作区是用来编译的(也许?如果我错了请纠正我),但其他区域是什么?
(此处为 V8 开发人员。)由于 Turbofan 是一个编译器,因此它使用的所有区域都用于编译。
它使用多个区域,以便之后可以释放仅短时间需要的临时数据,而主区域会一直保留到整个编译工作完成。这对于寄存器分配器使用的“register-allocation-zone”最为明显。
我不确定其他区域之间的区别是什么,老实说,我认为这不是特别重要:如果您专门致力于减少 Turbofan 的峰值内存消耗,那么您可能已经知道(或者可以通过阅读一些代码轻松找出);否则,您无需关心。特定区域集也可能随时更改。作为一名 JavaScript 开发者,这些编译器内部机制绝对不会让你担心。