我一直在努力让ruby prof在Mac OS X w/ruby 1.8.7上处理内存使用问题,但到目前为止我运气不佳。
我从文档中了解到RubyProf::MEMORY
模式需要Ruby的修补版本。我试着通过RVM:安装GC补丁版本(我在Rails文档中找到了它)
rvm reinstall 1.8.7 --patch ruby187gc
根据这个命令的输出,一切看起来都很好。我在控制台输出中清楚地看到"正在应用补丁‘ruby187gc’"。
这个问题似乎是在尝试使用RVM宝石时出现的。我写了以下脚本来测试这个:
require "ruby-prof"
RubyProf.measure_mode = RubyProf::MEMORY
results = RubyProf.profile do
# code to measure
end
File.open(File.join(File.dirname(__FILE__), "profile-graph.html"), "w") do |file|
RubyProf::GraphHtmlPrinter.new(results).print(file)
end
当我用rvm use 1.8.7 --patch ruby187gc
编写这个脚本时,它会创建一个文件"profile graph.html",显示脚本中所有不同方法调用的内存使用情况,正如我所期望的那样。但是,当我尝试类似rvm use 1.8.7@gemset_name --patch ruby187gc
的东西时,输出文件包含所有"nan"值。
什么东西?使用修补版本的Ruby和RVM宝石集有什么特别的技巧吗?问题出在别处吗?我在祈祷,希望有人遇到过类似的问题,并在之前解决了这个问题。
啊,我把事情搞得太复杂了。原来我只需要卸载并重新安装ruby-prof-gem(在修补ruby之后)。