I recently finished the book Java Performance: The Definitive Guide* by Scott Oaks and I really liked it!
The book is very well written and Scott gives a lot of in-depth explanations about complex topics like JIT compilation, garbage collector algorithms and thread synchronization. I learned a lot about different ways to analyze the performance of an application and how to optimize it. And I am sure that this book will be very useful when I have to analyze the next performance issue.
I recommend it to every experienced Java developer who likes to learn more about performance optimization.
But lets get into more details ...