2012-11-16 4 views
7

ノードアプリケーション(v 0.8.6)で発生しているメモリリークの根本的な問題を解決しようとしています。デバッグノードjsクロムによるガベージコレクション/メモリの問題

これを理解するために、私はhttps://github.com/c4milo/node-webkit-agentを使用しています。アプリケーションが大きいので、大きな問題であるアプリケーションのノイズの量を制限するために、テストベッドでこの問題を切り分けました。

テストを実行してから、Chromeエージェントをプロセスに接続します。オブジェクトは、どの保持オブジェクトもどのルートオブジェクトにも巻き込まれないように、クリーンアップする必要があるようです。パスの欠陥をいかに保つかについての私の理解はあるのでしょうか?私は以下のスクリーンショットをアップロードしました。デバッグセッションのうち、どのGCルートオブジェクトでも終わっていない保持パスと共にGC'dと考えられるオブジェクトを表示しています。

http://imgur.com/xV9xR

答えて

2

問題にアプローチする別の方法は、DTraceのを試してみるだろう。私は非常にsmartOSのようなディストリビューションをベースillumosでプロジェクトを置くことをお勧めします:

そしてここでは、ノード・アプリケーションのメモリリークを見つけるために、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をインストールしてデバッグしてください。あなたが本当のマシンを持っていればさらに良いでしょうが、必要なのはデバッグプラットフォームだけです.VMはうまくいくはずです。 – socketwiz

+0

ああ - ニース。再度、感謝します! –