Project Leyden, which caches classes in a loaded and linked state to shift expensive startup work into a training phase, gave the Quarkus team a new lens for analyzing startup performance. By nearly eliminating class-loading noise from startup profiles, flamegraph analysis revealed previously hidden bottlenecks: runtime reflection-based compatibility layers in libraries like Netty and Vert.x, runtime annotation processing in Hibernate ORM, costly ServiceLoader lookups, expensive static initializers in UUID/BigDecimal/TimeZone, and classpath walks for non-existent resources. The team addressed several of these through bytecode rewriting, generating empty package-info classes, and class loader tricks. The post argues these lessons apply broadly across the Java ecosystem and previews deeper Leyden integration coming in Quarkus 3.32.
Sort: