
As powerful as the JVM is, it can't magically fix your broken programs. Unfortunately many memory pressure problems remain hidden until you encounter production workloads. What I'd like to see most is practical advice on how to avoid these problems in the first place, how to debug them if they occur, and how to effectively test your code for leaks/memory bugs.
[1] http://www.amazon.com/Java-Performance-Definitive-Scott-Oaks...
I found that there are tons of beginner java, but nothing on JVM.
I've only found by Scott Oaks Java Performance, which gives some interesting knowledge about JVM but it's a secondary focus.