Most Java performance work is not about clever code. It's about knowing where the time actually goes, picking the right collection, and avoiding a handful of allocation traps that pile up under load. This lesson walks through the application-level habits that move the needle: measure first, then fix the algorithm, then watch out for the usual culprits. JVM tuning flags, GC algorithms, and concurrency-specific perf are covered elsewhere; this lesson stays in the code you write every day.