WWW::Mechanize でコンテンツとってきて TreeBuilder::XPath で解析するようなのを今まで単機能スクリプトなどでは便利に使っていたのだけど、それを永続的なプロセスで使おうとしたらメモリ使いまくってとんでもないことになったという話。 まずどんどんメモリが増えていくのでタイミングよく読んでいたjrockwayの記事などを参考に、 perl -MDevel::Leak::Object=GLOBAL_bless 付きでスクリプトを実行してみる。 少しソースをいじってまずはループを一回で止めるようにしたときの出力 Tracked objects by class: Config 1 DBI 1 DBI::var 5 DBIx::Class::ResultSource::Table 1 DateTime::Duration 2 DateTime::Format::Build