我发现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使用率要低得多,内存消耗也一直很低
发布于 2009-11-28 19:21:02
我没看错你的脚本吧?您是否正在访问可怜的craigslist站点,执行10K HTTP get请求?:)
无论如何,你的系统是什么,哪个版本的诺基亚gem,哪个版本的JRuby?只需对脚本稍作修改(只打开一次HTTP请求,然后倒回相同的数据),MRI和JRuby的行为基本相同,JRuby的速度甚至快了2秒。没有记忆问题。
发布于 2012-06-06 06:03:03
ruby对内存的控制比Jruby更好。在我看来,只有在需要使用Java库的情况下,或者如果同一程序的多个实例同时运行在同一台机器上时,才应该使用Jruby,在这种情况下,JVM缓存将会做出令人惊叹的事情。
https://stackoverflow.com/questions/1811472
复制相似问题