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

时间:2018-07-19 16:12:44

标签: javascript google-chrome-devtools profiling heap-dump

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

ObjectConstructorName@NumericIdentifier

NumericIdentifier is处:

  

这是一个对象ID。显示对象的地址没有意义,因为在垃圾回收期间会移动对象。这些对象ID是真实ID,这意味着它们在拍摄的多个快照中持久存在。这样可以精确比较堆状态。维护这些ID会增加GC周期的开销,但是仅在获取第一个堆快照之后才启动-如果不使用堆概要文件则不会产生开销。

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

ObjectConstructorName@10001
ObjectConstructorName@10002

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

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

1 个答案:

答案 0 :(得分:0)

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

  • 他们不确定担保目前是否成立。
  • 他们没有/没有计划做出这样的保证,而且不是一个可以依靠的人。