While there are many excellent resources about how to correctly use synchronization in your own code, what happens at the JVM level is still often a mystery for most users. In this session, I will pull back the curtain on HotSpot's locking implementation. We will look at the various types of locks that exist within HotSpot (thin, inflated, biased, etc.), how they are implemented, and the impact they have on your code's performance. We will also look at the various types of profiling information you can collect with tools like the Java Flight Recorder to better understand how locks are used by your application. Finally, we will look at the most common JVM tuning options for HotSpot and give some general tuning guidelines.