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.

12m read timeFrom quarkus.io
Post cover image

Sort: