/harb

Ruby 2.x objspace heap dump analyzer

Primary LanguageC++MIT LicenseMIT

harb

A Heap Analyzer for Ruby. A tool that can be used to analyze Ruby JSON heap dumps that are generated by ObjectSpace.dump_all. Should build on OSX and Linux.

Building

make, or DEBUG=1 make for debugging.

Usage

harb <heap_dump_file>

Example

harb (master) $ ./harb heap_dump-1554816045-60.json
parsing (100%)
updating references (100%)
generating dominator tree (100%)
harb> help
You can run the following commands:

              quit - Exits the program
             print - Prints heap info for the address specified
          rootpath - Display the root path for the object specified
              idom - Print the immediate dominator for the object specified
        dominators - Print all objects dominated by the object specified
              help - Displays this message
           summary - Display a heap dump summary
              diff - Diff current heap dump with specifed dump

harb> print 0x55bfefa89e18
    0x55bfefa89e18: "STRING"
             value: "`created_at`"
           memsize: 40
  retained memsize: 40
            frozen: true
   referenced from: [
                      0x55bff09ae830 (HASH: size 50)
                    ]
harb> rootpath 0x55bfefa89e18
root path to 0x55bfefa89e18:
                      ROOT (vm)
                      0x55bfcfbf0bf0 (DATA: VM/thread)
                      0x55bfd23479d8 (DATA: fiber)
                      0x55bff09af258 (OBJECT: ActiveRecord::ConnectionAdapters::PedantMysql2Adapter)
                      0x55bff09ae830 (HASH: size 50)
                      0x55bfefa89e18 (STRING: "`created_at`")

Dependencies

  • libreadline-dev