2009-11-28 2 views
2

많은 웹 페이지를 통해 반복하고 난 스크립트가 종료 될 때까지 메모리 소비가 지속적으로 인한 메모리 부족까지가는 것을 관찰 노코 기리 doc.xpath() 문제

manyhtmlpages.each do |page| 

doc = Nokogiri::HTML(page) 

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

end 

아래 같은 간단한 무언가를 호출.

doc.xpath 비트를 제거하면 위의 오류가 발생하지 않습니다.

+0

몇 페이지입니까? 단지 몇 가지만 검토하면 발생합니까? 소비량은 페이지의 양에 비례합니까? – Steinbitglis

+0

수천 HTML 고유 페이지가 발생합니다. 그리고 더. – bbbnb

+0

사용자 이름을 변경해도 같은 질문을 반복해서 게시하는 것은별로 짜증나지 않습니다. –

답변

0

나는 페이지와 문서가 범위를 벗어날 때까지 코드가 가비지 수집되지 않는다는 점이 문제의 근본 원인이라고 생각한다.

유사한 문제가 here으로 설명됩니다.
이것은 libxml-ruby의 문제입니다. 그러나 알고있는 한 nokogiri는 실제로 libxml을 기반으로합니다.

죄송합니다. 그러나이 문제에 대한 정확한 정보는 알 수 없습니다. 그것은 당신을 올바른 방향으로 가리키는 것입니다.

+0

이것이 올바른 방향이라고 생각합니다. gc.start로 가비지 수집을 시도 할 것입니다. – bbbnb