在heapdump比较中找不到对象

时间:2017-01-22 23:51:42

标签: javascript node.js v8 heap-dump

我已经安装了heapdump nodejs模块以转储堆对象。

使用此代码(nodejs6.9.1),

'use strict'
const heapdump = require('heapdump')
heapdump.writeSnapshot()
const obj = {
  test: 2,
  foo: 6.4,
  wow: true,
  a: { }
}
heapdump.writeSnapshot()
console.log(obj) // <-- make sure obj lives until here 

我已经打印了两个堆转储。

将它们导入chrome dev工具并切换到比较模式,我至少要看obj对象(带有其他一些值)。

相反,我只看到那些值:

(compiled code)
(array)
(system)
(concatenated
(string)

为什么?

编辑: 将代码移动到setTimeout中,dump diff正确显示两个对象

setTimeout(() => {
  heapdump.writeSnapshot()
  const obj = {
    test: 2,
    foo: 6.4,
    wow: true,
    a: { }
  }
  heapdump.writeSnapshot()
  console.log(obj)
}, 1000)

注意:test和foo属性不在dump diff中。

1 个答案:

答案 0 :(得分:0)

此代码说明了我对此问题的评论

heapdump.writeSnapshot()
 const obj = {
 test: 2,
 foo: 6.4,
 wow: true,
 a: { }
}
heapdump.writeSnapshot(function(err, filename) { // this is the callback
 console.log(obj);
})