blob: 430cde14cc5c723f2a72b1b213d004e3030876ab [file] [log] [blame]
#!/usr/bin/env ruby
class ObjectKind
attr_reader :name, :kind, :heap
def initialize(name, kind, heap)
@name = name
@kind = kind
@heap = heap
end
def hash
@name.hash + @kind.hash + @heap.hash
end
def eql?(other)
@name == other.name and @kind == other.kind and @heap == other.heap
end
def to_s
"#{@heap}:#{@kind}:#{@name}"
end
end
$sizeHistogram = {}
$currentHeap = nil
$stdin.each_line {
| line |
line.chomp!
case line
when "bootstrap_free_heap:", "utility_heap:"
$currentHeap = line.chop
when /^ 0x([0-9a-f]+)\.\.\.0x([0-9a-f]+): ([^,]+), size = ([0-9]+), kind = (.*)/
objectKind = ObjectKind.new($3, $5, $currentHeap)
size = $4.to_i
$sizeHistogram[objectKind] = 0 unless $sizeHistogram[objectKind]
$sizeHistogram[objectKind] += size
end
}
$sizeHistogram.keys.sort {
| a, b |
$sizeHistogram[b] <=> $sizeHistogram[a]
}.each {
| key |
puts "#{key}: #{$sizeHistogram[key]}"
}