2011年9月14日のブックマーク (2件)

  • MechanizeがHistoryを保存してメモリを食いつぶすのを防ぐ - それマグで!

    Mechanizeって便利で、すごく使うのだけれど、履歴がさー履歴がたまるとメモリをいつぶしました。 Mechanizeでは簡単に防げるようです WWW::Mechanize#max_history で履歴の最大数を指定できます。履歴機能を活用しないという場合の推奨値は 1 です。 agent = WWW::Mechanize.new agent.max_history = 1 agent.get(uri) max_history= に 0 を指定すると履歴保持数が 0になりますが、メモリにファイル全体を取り込むこと自体は全く抑制できません。一度全部メモリに取り込んでから履歴が max_history 個になるように削除するという処理の流れになっており、WWW::Mechanize::File#save メソッドなどを即使っても「オンザフライ」で処理されるというようなことはありません。

    MechanizeがHistoryを保存してメモリを食いつぶすのを防ぐ - それマグで!
  • WWW::Mechanize のメモリ消費量について - make world

    WWW::Mechanizeは、通常の利用範囲ならば、メモリ消費量について問題にはならないと思う。 しかし、一回の実行で、数千回以上の URL アクセスを繰り返すようならば、WWW::Mechanize のメモリ消費量を考慮すべきである。考慮しないと、そのうちに Out of Memory エラーが発生して、異常終了してしまうからだ。 WWW::Mechanize でメモリ消費量が増加する理由 それは、WWW::Mechanize はアクセスした URL の接続履歴をずっと残す初期設定があるからだ。履歴をどれだけ残すかどうかの設定があるので、要件に応じて残す履歴の件数を制限するとよい。 WWW::Mechanize の初期設定 $mech->stack_depth($max_depth) Get or set the page stack depth. Use this if you're

    WWW::Mechanize のメモリ消費量について - make world