JVM Performance Engineering • Monica Beckwith & Kirk Pepperdine • GOTO 2024

Learn JVM performance engineering best practices, from system-level analysis to hardware optimization. Explore benchmarking, observability & modern challenges in cloud environments.

Key takeaways
  • Performance engineering requires understanding the “what”, “why” and “how” - focusing on both the high-level system behavior and low-level implementation details

  • Experimental design and benchmarking are core activities, but most benchmarks are flawed due to complexity of variables and difficulty in reproducing real-world scenarios

  • Top-down and bottom-up methodologies are complementary approaches - top-down starts with system-level analysis while bottom-up focuses on specific optimization areas

  • Hardware knowledge is critical for performance engineering, as JVM performance is heavily influenced by CPU architecture, memory systems, and hardware capabilities

  • Observability is essential for performance engineering, providing insights into system behavior and enabling data-driven decisions

  • Non-functional requirements (“ilities”) like scalability, reliability, availability and maintainability are key aspects of performance engineering

  • Performance engineering should be integrated early in the development lifecycle, not just during deployment

  • Modern challenges include cloud native environments, microservices, containers which add complexity to performance optimization

  • Collaboration across disciplines (hardware, software, operations) is necessary as systems become more complex

  • The JVM continues evolving to handle new hardware capabilities, concurrency models, and deployment scenarios requiring ongoing performance optimization work