多くの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 ビットを削除すると、上記のエラーは発生しません。
問題の根本は、ページとドキュメントの両方がスコープを離れるまでコードがガベージコレクションされないことにあると思います(間違っている場合は修正してください)。
同様の問題がここで説明されています。
これはlibxml-rubyの問題ですが、私が知る限り、nokogiriは実際にはlibxmlに基づいています。
申し訳ありませんが、この問題の正確な詳細はわかりません。それはあなたを正しい方向に向けるだけです。