[JavaScript] jsdom memory leak (メモリリーク)
Node.js で jsdom を利用して数万件のウェブページをスクレイピングしたところ out of memory エラーが発生しました。
FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory
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