How do you find the physical memory free on the machine in Ruby?
If you are using linux,You usually use a "free" command to find physical memory ie RAM details on the system
output = %x(free)
output will look slightly like the following string
" total used free shared buffers cached\nMem: 251308 201500 49808 0 3456 48508\n-/+ buffers/cache: 149536 101772\nSwap: 524284 88612 435672\n"
You can extract the information you need using simple string manipulations like
output.split(" ")[7]
will give total memory
output.split(" ")[8]
will give used memory
output.split(" ")[9]
will give free memory
Slightly slicker version of AndrewKS's answer:
total_memory_usage_in_k = `ps -Ao rss=`.split.map(&:to_i).inject(&:+)
Well, the Unix command "top" doesn't seem to work in Ruby, so try this:
# In Kilobytes
memory_usages = `ps -A -o rss=`.split("\n")
total_mem_usage = memory_usages.inject { |a, e| a.to_i + e.strip.to_i }
This "seems" correct. I don't guarantee it. Also, this takes a lot more time than the system will so by the time it's finished the physical memory would have changed.