For the Java OOM analyzer, did you look at creating a heapdump automatically (using -XX:+HeapDumpOnOutOfMemoryError), and then using the Memory Analyzer Toolkit (http://www.eclipse.org/mat/)?
I can see that your approach is (presumably) much faster because it avoids the need to dump all the memory, but I've found heapdump + MAT to be incredibly powerful.