V8 如何处理 "large object space" 中的对象

How does V8 handle objects in "large object space"

我在 V8 wiki 中读到,堆中有一个大对象 space 未被 GC 移动。

Large-object-space: This space contains objects which are larger than the size limits of other spaces. Each object gets its own mmap'd region of memory. Large objects are never moved by the garbage collector.

那么 V8 是如何处理这些对象的呢?所以如果我有这样的对象

function Point() {
  this.a = new Array(99999999).join("aaaaaaaaaa");
  this.b = new Array(99999999).join("aaaaaaaaaa");
  this.c = new Array(99999999).join("aaaaaaaaaa");
}
var a = new Point();

它将被移动到大对象 space 并且永远不会被 GC 清除?

(此处为 V8 开发人员。)Bergi 的评论是正确的。大对象没有移动到大对象space,它们是大对象space中创建的。只要他们还活着,他们就不会被感动。但是它们像任何其他对象一样被垃圾收集:当 GC 检测到它们不再存在时,内存将被释放。一般来说,释放死对象并不涉及移动它们。