class MemoryTracker::GcStat
Constants
- CANONICAL_TO_RUBY22_MAPPING
- CANONICAL_TO_RUBY23_MAPPING
- RUBY22_TO_CANONICAL_MAPPING
- RUBY23_TO_CANONICAL_MAPPING
Public Class Methods
canonical_key_name(key)
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 55 def self.canonical_key_name(key) canonical = key case RUBY_VERSION when /\A2\.2\./ canonical = RUBY22_TO_CANONICAL_MAPPING.fetch(key, key) when /\A2\.3\./ canonical = RUBY23_TO_CANONICAL_MAPPING.fetch(key, key) end canonical end
current_version_key_name(key)
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 66 def self.current_version_key_name(key) current_key_name = key case RUBY_VERSION when /\A2\.2\./ current_key_name = CANONICAL_TO_RUBY22_MAPPING.fetch(key, key) when /\A2\.3\./ current_key_name = CANONICAL_TO_RUBY23_MAPPING.fetch(key, key) end current_key_name end
gcdiff(before, after)
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 81 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
heap_used()
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 77 def self.heap_used GC.stat[current_version_key_name(:heap_used)] end
new(rss, vsize)
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 19 def initialize(rss, vsize) @stats = GC.stat.merge({ :rss => rss, :vsize => vsize}) end
Public Instance Methods
[](key)
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 43 def [](key) @stats[current_version_key_name(key)] end
canonical_key_name(key)
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 47 def canonical_key_name(key) self.class.canonical_key_name(key) end
current_version_key_name(key)
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 51 def current_version_key_name(key) self.class.current_version_key_name(key) end
each() { |canonical_key_name(k), v| ... }
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 23 def each(&block) @stats.each do |k, v| yield canonical_key_name(k), v end end
keys()
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 29 def keys @stats.keys end
ordered_keys()
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 33 def ordered_keys @stats.keys.map { |k| canonical_key_name(k) }.sort end
ordered_values(ordered_columns = ordered_keys)
click to toggle source
# File lib/memory_tracker/gc_stat.rb, line 37 def ordered_values(ordered_columns = ordered_keys) ordered_columns.inject([]) do |vals, key| vals << @stats[current_version_key_name(key)] end end