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:
Current Features that I want to see that will take lots of work: