Спа*_*лов 4 javascript memory memory-management v8
V8如何在内存中存储整数?
例如整数5?
我知道它存储在堆中,但是它到底是如何存储的呢?诸如元数据和实际值本身之类的东西。int 存储之前是否添加了常量?
Sup*_*fly 11
V8 使用指针标记方案来区分小整数和堆对象指针。5 将存储为Smi
类型,在 V8 中未分配堆。
您可以查看Smi 类的源代码以了解更多信息。
在 32 位平台上,Smis 是一个 31 位有符号 int,底部位设置为 0。在 64 位平台上,Smis 是一个 32 位有符号整型,31 位 0 填充,底部位 0。指向堆对象的指针的底部位设置为 1,这样 V8 就可以区分指针和 Smis 之间的区别,而无需额外的元数据。