Node.jsのアプリケーションのメモリリークを調べたことがなかったので方法を調査する
2017年の記事だけどfurukawaさんの記事を参考にした
yosuke-furukawa.hatenablog.com
node-heapdump
を利用してみる
何らかの事前処理を伴ってからプログラマブルに取得したいので、SIGUSR2 のシグナルを送って dump ファイルを取得するようにした
const heapdump = require("heapdump"); process.on("SIGUSR2", () => { heapdump.writeSnapshot("/Users/ugaboxxx/" + Date.now() + ".heapsnapshot"); });
上の実装をしてアプリを起動
ps コマンドを入力して、プロセス識別子 (pid) を検索
$ ps -ef | grep node
kill コマンドを入力して、nodeアプリ に SIGUSR2 シグナルを送信
$ kill -USR2 node_pid
これによりdumpファイルは作られていたが、Chrome の DevTools のMemoryタブからアクセスして内容を確認しようとしたところローディングが長く、いつまでたっても読み込まれなかった
理由がよくわからないので、別の方法を探すことにする