2

多くのWebページをループして、以下のような単純なものを呼び出すとき

manyhtmlpages.each do |page|

doc = Nokogiri::HTML(page) 

puts doc.xpath("/html/body/h2[1]","/html/body/a[1]").to_s

end

メモリ不足のためにスクリプトが終了するまで、メモリ消費量が継続的に増加することがわかりました。

doc.xpath ビットを削除すると、上記のエラーは発生しません。

4

1 に答える 1

0

問題の根本は、ページとドキュメントの両方がスコープを離れるまでコードがガベージコレクションされないことにあると思います(間違っている場合は修正してください)。

同様の問題がここで説明されています。
これはlibxml-rubyの問題ですが、私が知る限り、nokogiriは実際にはlibxmlに基づいています。

申し訳ありませんが、この問題の正確な詳細はわかりません。それはあなたを正しい方向に向けるだけです。

于 2009-11-28T01:33:09.920 に答える