# quick'n'dirty
def diff_gc(first_gc, second_gc)
# add custom field
[first_gc, second_gc].each { |gc| gc[:allocated] = gc[:total_allocated_object] - gc[:total_freed_object] }
# get data
first_gc.keys.map do |key|
before = first_gc[key]
after = second_gc[key]
diff = after - before
[sprintf("%35s", key), sprintf("%+10i", diff), sprintf("%15i", before), sprintf("%15i", after)].join(" ")
end.each do |line|
puts line
end
nil
end
usage:
a = {}
b = {}
GC.stat(a)
# coding stuff
GC.stat(b)
diff_gc(a, b)