2017-01-22 44 views
0

我已经安装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开发工具并切换到比较模式,我想要至少看到obj对象(以及其他一些值)。

相反,我看到的只是这些值:

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

为什么?

编辑: 代码移动到的setTimeout,转储DIFF示出了两个对象正确

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

NB:试验和Foo属性不转储差异。

+0

你应该使用一个有效的回调** **作为文档建议:[节点headump](https://github.com/bnoordhuis/node- heapdump)。作者实际上知道**“hitch”**效果 – ymz

回答

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); 
})