以下の内容はhttps://unageanu.hatenablog.com/entry/20090620/1245485357より取得しました。


クリック証券アクセスプラグインのメモリリークをデバッグ中

先週公開したjiji用クリック証券アクセスプラグインですが、連続で2,3日動かしているとメモリ使用量が酷いことに・・・。申し訳ありません。

原因

※注: 以下はWWW::Mechanize0.9.0 のソースを対象に調査した結果です。

ということで、ツールを作って調査していたわけですが、どうもWWW::Mechanizeの履歴機能でWWW::Mechanize::Pageの参照が大量に保持されているのが原因っぽい。

  • インスタンス数をみると、[WWW::Mechanize::Page]とか[WWW::Mechanize::Headers]のインスタンスが徐々に増加していて、
  • 以下のように参照が保持されていました。
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に組み込んでの確認は来週になります。




以上の内容はhttps://unageanu.hatenablog.com/entry/20090620/1245485357より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14