class MemoryMonitor

Public Class Methods

new(pid) click to toggle source
# File lib/memory_monitor.rb, line 3
def initialize pid
  @pid = pid
  @data = {}
end

Public Instance Methods

after_request(url) click to toggle source
# File lib/memory_monitor.rb, line 12
def after_request url
  @data[url] = memory - @data[url]
end
before_request(url) click to toggle source
# File lib/memory_monitor.rb, line 8
def before_request url
  @data[url] = memory
end
report() click to toggle source
# File lib/memory_monitor.rb, line 16
def report
  sorted = @data.sort_by { |url, memory| -memory }
  
  
  puts "\nMost memory used actions:"
  sorted.each_with_index do |(url, memory), index|
    puts "##{index + 1}\t#{memory/1024} KB\t=> #{url.to_s}"
  end
end

Private Instance Methods

memory() click to toggle source
# File lib/memory_monitor.rb, line 27
def memory
  mem = `ps -o rss #{@pid}`[/\d+/].to_i
  raise 'invalid PID' unless mem > 0
  mem
end