mem_inspect

About

mem_inspect is ObjectSpace.each_object on crack. mem_inspect gives you the contents of each slot in Ruby's heap. mem_inspect also includes viewers that let you visualize the contents of Ruby's heap.

Installing mem_inspect

First, install the gem:

$ sudo gem install mem_inspect

Then you need to build a patched ruby:

ruby_mem_inspect_build

Optionally, you can install the patch ruby binary. It will be named “ruby_mem_inspect”.

Using mem_inspect

Dumping a PNG

To get a PNG of memory use:

mem_inspect_ruby_1_8/ruby_mem_inspect -S ruby_mem_dump

To get a PNG of memory use in your application:

require 'mem_inspect'
require 'mem_inspect/png_viewer'

And when you want to dump a PNG:

MemInspect::PNGViewer.new(1024, 768).draw

Dumping via AquaTerm

First you'll need to install RubyCocoa. You can find instructions for that here:

rubycocoa.sourceforge.net/doc/getting.en.html

rubycocoa.sourceforge.net/doc/build.en.html

Then you'll need to download AquaTerm:

sourceforge.net/project/showfiles.php?group_id=39915

Once you have all that installed you can dump to an AquaTerm plot:

require 'mem_inspect'
require 'mem_inspect/aquaterm_viewer'

And when you want a plot:

MemInspect::AquatermViewer.new(1024, 768).draw