我已经安装了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中。
答案 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);
})