[JavaScript] jsdom memory leak (メモリリーク)
- 2015 1/11
Node.js で jsdom を利用して数万件のウェブページをスクレイピングしたところ out of memory エラーが発生しました。
Node.js のエラーメッセージ
FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory |
jsdom のメモリリーク解決方法
jsdom.env メソッドに渡す callback メソッドの中で使用した window オブジェクトに関連するメモリを解放するために window.close() メソッドを呼ぶ必要があるそうです。
jsdom.env(html, function (errors, window) { // free memory associated with the window window.close(); }); |
ドキュメントに書いてある通りに使わないとダメだなぁと痛感しました・・・。
参考情報
・jsdom and node.js leaking memory – Stack Overflow
・javascript – Memory leak in Node.js scraper – Stack Overflow