如果我创建一个ruby对象会消耗多少内存?

pan*_*ang 3 ruby memory-management ruby-on-rails

  • 我想知道如果我创建一个ruby对象会占用多少内存.Ruby有什么方法可以告诉吗?
  • 下面的内存消耗有什么不同吗?

    users = User.where("created_at > ?", 2.months.ago)  # select all fields
    users = User.select(:user_name).where("created_at > ?", 2.months.ago) # just select one field
    
    Run Code Online (Sandbox Code Playgroud)

enr*_*cis 5

你可以使用ruby-prof一个精彩的ruby探测器,它会告诉你代码正在做的一切,包括内存分配.用法非常简单:

require 'ruby-prof'

# Profile the code
result = RubyProf.profile do
  ...
  [code to profile]
  ...
end

# Print a flat profile to text
printer = RubyProf::FlatPrinter.new(result)
printer.print(STDOUT)
Run Code Online (Sandbox Code Playgroud)

它可以输出结果的文本,文本图形,HTML图表,调用栈更多.在自述文件中还有一个关于分析rails应用程序的部分.安装是即时的,所以试一试:

gem install ruby-prof
Run Code Online (Sandbox Code Playgroud)