node.jsのガベコレ
よくメモリリークしてるとか言われているがどういうときに起こるか
そもそもnode.jsのガベコレは他のガベコレと同じようにリアルタイムアプリケーション作る場合によくやるフレーム毎にGC処理をコールしてやる必要がある(UNITY,AS3など)
これをやらないと高負荷な状況でGCをサボるのでメモリリークしているようにみえる。(キューに処理がつまれていって一度に処理する回数が少ないのでパンクするようなもの)
手動でGCをやるには↓のようにする
$ vi node_server #!/bin/bash node --expose_gc $@
setTimeoutなりprocess.nextTickとかで↓をコールする。
if( global.hasOwnProperty('gc') ){ global.gc(); }
他に起こるとしたら循環参照だけどこれは気をつけるしかない
nodejsのV8は世代別GCを採用しているので↓の説明が参考になる
↓これはすこし古いかも
http://msdn.microsoft.com/ja-jp/library/bb250448%28VS.85%29.aspx
単純な循環参照であればV8のGCはそのうち片付けてくれる
大抵はイベントリスナに登録するイベントハンドラかな。
eventemitterとかeventemitterとかeventemitterなもの