クリック証券アクセスプラグインのメモリリークをデバッグ中
先週公開したjiji用クリック証券アクセスプラグインですが、連続で2,3日動かしているとメモリ使用量が酷いことに・・・。申し訳ありません。
原因
※注: 以下はWWW::Mechanize0.9.0 のソースを対象に調査した結果です。
ということで、ツールを作って調査していたわけですが、どうもWWW::Mechanizeの履歴機能でWWW::Mechanize::Pageの参照が大量に保持されているのが原因っぽい。
WWW::Mechanize::Page ↑所有 WWW::Mechanize::History ↑所有 WWW::Mechanize ↑所有 ClickClientScrap::FX::FxSession
デフォルトでは履歴の数に制限がないようなので、同じWWW::Mechanizeのインスタンスを使ってサイトにアクセスし続けていると、履歴がどんどん蓄積されていくはず。
対応
履歴機能は、コードを見ると、ブラウザの「前に戻る」をシミュレートする機能のようなので、clickclient_scrapでは不要。WWW::Mechanize# max_history=で最大履歴数を設定できるみたいなので、これを「0」に設定して対応します。
インスタンス数については、この対応で増加しないことを確認済み。とりあえずGitHubへのコミットはしておきました。
→Github - unageanu / clickclient_scrap
jijiに組み込んでの確認は来週になります。