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

Ben*_*aum 5 javascript profiling heap-dump google-chrome-devtools

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

ObjectConstructorName@NumericIdentifier
Run Code Online (Sandbox Code Playgroud)

其中NumericIdentifier是:

这是一个对象ID.显示对象的地址没有意义,因为在垃圾收集期间移动了对象.这些对象ID是真实ID - 这意味着它们在拍摄的多个快照中持久存在.这允许堆状态之间的精确比较.维护这些ID会增加GC周期的开销,但它仅在第一个堆快照拍摄后启动 - 如果未使用堆配置文件则不会产生任何开销.

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

ObjectConstructorName@10001
ObjectConstructorName@10002
Run Code Online (Sandbox Code Playgroud)

我可以依赖第一个对象(比之前分配的)比第二个对象更长吗?

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

Ben*_*aum 0

刚刚跟进。与几位V8工程师交谈后:

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