Class: MemoryTracker::GcStat

Inherits:
Object
  • Object
show all
Defined in:
lib/memory_tracker/gc_stat.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rss, vsize) ⇒ GcStat

Returns a new instance of GcStat.



5
6
7
# File 'lib/memory_tracker/gc_stat.rb', line 5

def initialize(rss, vsize)
  @stats = GC.stat.merge({ :rss => rss, :vsize => vsize})
end

Instance Attribute Details

#statsObject (readonly)

Returns the value of attribute stats.



3
4
5
# File 'lib/memory_tracker/gc_stat.rb', line 3

def stats
  @stats
end

Class Method Details

.gcdiff(before, after) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/memory_tracker/gc_stat.rb', line 20

def self.gcdiff(before, after)
  return {} unless (before && before[:total_allocated_object] && before[:total_freed_object])
  return {} unless (after && after[:total_allocated_object] && after[:total_freed_object])
  diff = {}
  b = before.clone
  a = after.clone
  diff[:num_alloc] = a[:total_allocated_object] - b[:total_allocated_object]
  diff[:num_heaps] = a[:heap_used]
  [ a, b ].each do |x|
    x.delete(:heap_increment)
    x.delete(:heap_length)
    x.delete(:heap_final_num)
    x[:in_use] = x.delete(:total_allocated_object) - x.delete(:total_freed_object)
  end
  b.each_key do |key|
    diff[key] = a[key] - b[key]
  end
  diff
end

Instance Method Details

#ordered_keysObject



9
10
11
# File 'lib/memory_tracker/gc_stat.rb', line 9

def ordered_keys
  @stats.keys.sort
end

#ordered_valuesObject



13
14
15
16
17
18
# File 'lib/memory_tracker/gc_stat.rb', line 13

def ordered_values
  ordered_keys.inject([]) do |vals, key|
    vals << @stats[key]
    vals
  end
end