Module: Evilution::Memory

Defined in:
lib/evilution/memory.rb,
lib/evilution/memory/leak_check.rb

Defined Under Namespace

Classes: LeakCheck

Constant Summary collapse

PROC_STATUS_PATH =
"/proc/%d/status"
RSS_PATTERN =
/VmRSS:\s+(\d+)\s+kB/

Class Method Summary collapse

Class Method Details

.deltaObject



32
33
34
35
36
37
38
# File 'lib/evilution/memory.rb', line 32

def delta
  before = rss_kb
  result = yield
  after = rss_kb
  delta_kb = before && after ? after - before : nil
  [result, delta_kb]
end

.rss_kbObject



10
11
12
# File 'lib/evilution/memory.rb', line 10

def rss_kb
  rss_kb_for(Process.pid)
end

.rss_kb_for(pid) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/evilution/memory.rb', line 21

def rss_kb_for(pid)
  path = format(PROC_STATUS_PATH, pid)
  content = File.read(path)
  match = content.match(RSS_PATTERN)
  return nil unless match

  match[1].to_i
rescue Errno::ENOENT, Errno::EACCES, Errno::ESRCH
  nil
end

.rss_mbObject



14
15
16
17
18
19
# File 'lib/evilution/memory.rb', line 14

def rss_mb
  kb = rss_kb
  return nil unless kb

  kb / 1024.0
end