2012-11-16 63 views
7

我試圖找到一些內存泄漏的根本問題,我有一個節點應用程序(v 0.8.6)。調試節點js垃圾收集/內存鉻問題

爲了解決這個問題,我使用了https://github.com/c4milo/node-webkit-agent。由於該應用程序很大,我在測試平臺中隔離了這個問題,以限制大型應用程序中的噪聲量。

我們運行我們的測試,然後將Chrome代理附加到進程。該物體似乎應該清理乾淨,因爲沒有任何保留路徑纏繞在任何根部物體上。我的理解是如何保留路徑有缺陷,有什麼我失蹤?我已經上傳了調試會話下方的屏幕截圖,顯示了我認爲應該GC'd的對象以及不會以任何GC根目標結束的保留路徑。

http://imgur.com/xV9xR

回答

2

另一種方式來解決這個問題是嘗試DTrace的。我會強烈建議把你的項目在Illumos的基礎發行版一樣smartOS

這裏是談論如何使用DTrace發現內存泄漏節點應用的文章:http://dtrace.org/blogs/bmc/2012/05/05/debugging-node-js-memory-leaks/

+0

感謝 - 我們將進軍結束對Joyent並且給那一個射擊。感謝您的意見。 –

+0

這實際上可以在沒有Joyent的情況下完成。如果你有vmware,你可以在那裏啓動[smartos](https://download.joyent.com/pub/iso/latest-vmwarevm.tar.bz2),安裝nodejs vm並在那裏進行調試。如果你有一臺真正的機器來開發它,那更好,但如果你需要的只是一個調試平臺,那麼虛擬機應該沒問題。 – socketwiz

+0

啊 - 好的。再次感謝! –