2017-01-22 50 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); 
})