Perlのメモリリークを見つける方法 - Islands in the byte stream(情報元のブックマーク数)

メモ。

Perlではメモリリーク検出ツールがいくつか開発されているので、top(1)の結果を眺めるよりそういうツールを使うほうが楽である。
さて、メモリリークが発生しているとき、その可能性としてはだいたい以下の4つが挙げられる。
Perlレベルでの循環参照
グローバル変数に値をどんどん足しているとき*1
XSレベルでリファレンスカウントの管理ミス
XSレベルでmalloc()したメモリの管理ミス
この1-3についてはすべてPerlインタプリタ内の出来事であり、Test::LeakTraceを使って検出できる。4を検出するのは難しいが、Test::Valgrindが役に立つ。
Test::LeakTraceのSYNOPSISは歴史的経緯によりごちゃごちゃしているが、テストで使うべき関数はno_leaks_ok()とleaks_cmp_ok()だけである。

Perlのメモリリークを見つける方法 - Islands in the byte stream

screenshot