I was wondering if something exists (in Java world) able to take an snapshot of the JVM current state with the following features:
Not sure if this is viable in a production environment, but there's the Omniscient debugger:
What if your debugger could go "go backwards in time?" Would that make debugging easier? By simply recording all variable assignments, it is possible to do essentially this. This is the underlying idea for omniscient debugging. The amazing part is that significantly large programs can be debugged in this fashion -- Ant, JUnit, the debugger itself.
http://www.lambdacs.com/debugger/