Home > Memeograph

Memeograph

Memeograph is a project mainly written in JAVA and C, it's free.

A Java debugger that will create memory graphs of a running java program

What this program does: Draws the stack and the heap of a running Java program in 3D

How to run: Use 'ant -p' to get a list of all of the public targets that you can run These change often so you're better off just running 'ant -p'

How does this program work? In simple terms here are the steps of execution: 1.) Memeographer creates a JVM that runs a target program (called the SuT for System Under Test) 2.) Memeographer attaches to that JVM and starts listening for calls to memeographer.Memeographer.step() 3.) Every time Memeographer grapher sees that function being called it will temporarily suspend the execution of all threads in SuT generate an object graph of the program. 4.) The JVM exits, Memeographer has it's graphs. 5.) The graphs are rendered for the user. (Yay!)

In reality the ordering of these events can vary, but right now that doesn't really happen

How does the code work? Documenting that here is just asking for pain since things change. But here are some ideas that I don't think will change: Right now the "core" of Memeographer are just the four classes in the memeograph packeage. 3 out of those 4 contain only a handful of code. For information about how the code fits together: memeograph.Memeographer //Information about the life cycle of the program memeograph.Config //Information about how objects are created, configured and extended memeograph.graph.Node //Information about how nodes in the graph store information

Current concrete missing features:

  • Implementing the physics layout for GraphLayoutHandler (Where did all of that phsyics code go anyway?)
  • Implement Peter's cool 3-D layout algorithm (currently in LaTeX and not Java) -- Matt is on this
  • Bring back the animations for transitioning between graphs. (Easier once the above is done)

Current Features that I want to see that will take lots of work:

  • Make the creation of the graph interactive so that people can step through their code line-by-line
  • Allow for people to be able to type in their code and watch it run.
  • Getting it to work with jython,closure,scala and some of the more badass JVM languages
  • Attachment to an IDE plugin so that more "novice" users can take advantage of this