Look at you, hacker. You think you know all there is about building apps for the JVM. You've used all the cool tools. You've written your own persistence library or web frameworks. Maybe you've even implemented a JVM language. But do you really know what happens to your code after you hand it off to the JVM? This talk will explore the guts of the OpenJDK VM, Hotspot. We'll take a few simple examples from bytecode through optimization and compilation all the way down to assembly code, and explore how you can ensure your code runs as fast as possible. We'll see how generational garbage collection works with the aid of VisualVM and learn a few JVM flags to help you tune it. We'll play with invokedynamic and show how it fits into the JVM story. And we'll chat about how you can take advantage of this newfound knowledge to be a better JVM user.