読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

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

先週公開した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に組み込んでの確認は来週になります。