CPUとメモリの使用量に驚くべき違いがありました。次のnokogiriスクリプトを実行すると、ガベージコレクションが発生していないようです。
require 'rubygems'
require 'nokogiri'
require 'open-uri'
def getHeader()
doz = Nokogiri::HTML(open('http://losangeles.craigslist.org/wst/reb/1484772751.html'))
puts doz.xpath("html[1]\/body[1]\/h2[1]")
end
(1..10000).each do |a|
getHeader()
end
Jrubyで実行すると、CPU消費量は10を超え、メモリ消費量の割合は時間とともに増加し(2から20まで)、最終的に「メモリが不足しています」と表示されます。
Rubyで実行すると、CPU消費量が2を超えることはなく、メモリ消費量の%は0.2で一定です。
なぜこのような大きな違いがあるのか、クラッシュするまでメモリ消費量が着実に増加しているのはなぜですか。
Rubyで実行すると、CPU使用率がはるかに低くなり、メモリ消費量が常に非常に少なくなります。