代码之家  ›  专栏  ›  技术社区  ›  Benjamin Gruenbaum

堆快照标识符是否保证单调增加?

  •  5
  • Benjamin Gruenbaum  · 技术社区  · 6 年前

    我正在使用堆快照调试潜在的内存问题。如文档所示,对象以这种格式显示:

    ObjectConstructorName@NumericIdentifier
    

    在哪里? NumericIdentifier is :

    这是一个对象ID。显示对象的地址是没有意义的,因为对象是在垃圾回收过程中移动的。这些对象ID是真实的ID,也就是说,它们在拍摄的多个快照中保持不变。这允许在堆状态之间进行精确比较。维护这些ID会增加GC周期的开销,但只有在获取第一个堆快照之后才启动;如果不使用堆配置文件,则不会增加开销。

    我想知道标识符是否保证是单调递增的?给出:

    ObjectConstructorName@10001
    ObjectConstructorName@10002
    

    我可以依靠第一个对象比第二个对象更老(以前分配过)吗?

    如果是-担保有多强?(例如,它是否在构造函数名称之间保持?)

    1 回复  |  直到 6 年前
        1
  •  0
  •   Benjamin Gruenbaum    6 年前

    只是跟进。与几个V8工程师交谈后:

    • 他们不确定担保是否有效。
    • 他们没有做出这样的保证的计划,也不是一个可以信赖的人。