Beyond Optimized Spring Boot: Javalin, Jdbi and a Smaller Java Application
Compare complete Spring Boot and Javalin stacks on a 512 MiB VM, including HotSpot and Native Image results.
We diagnose difficult production problems across Java, the JVM, JDBC, transactions, and databases. The work starts with evidence and ends with a root cause your team can verify.
A symptom in one layer often begins somewhere else. A depleted JDBC pool may start with transaction scope or a database lock. GC pressure may start with application allocation or retention. High CPU may reflect contention, retries, or queue buildup rather than productive work.
We correlate evidence instead of tuning each component in isolation.
Measurements of Java memory, frameworks, connection pools, and persistence. Each write-up explains the workload, results, and limitations, with links to the experiment record.
Compare complete Spring Boot and Javalin stacks on a 512 MiB VM, including HotSpot and Native Image results.
Same service on a 512 MiB VM: 212 MiB as a JAR, 187 MiB on optimized HotSpot 27, 107 MiB as Oracle Native Image on JDK 25.
Measured Spring Boot startup and memory changes with JDK 27, comparing practical JVM and application optimizations.
Equivalent JDBC apps on Java 25, measured one at a time for startup, resident memory, and CPU. Quarkus had the lowest overall median RSS; its memory use converged with Micronaut’s near the end of this single run.
A practical look at Spring Boot, compact object headers, and monitoring on a 256 MiB VPS.
Two local runs compare Scriptella 1.7.0, handwritten JDBC, Pandas + SQLAlchemy, and native loaders on PostgreSQL and MariaDB.
Two runs per library with H2, 512 MiB RAM, and no swap. MyBatis used the least median workload RSS; Jdbi was competitive on latency. Includes repository code and a separate monitored MyBatis repeat.
Two pools released 18 idle connections. PostgreSQL cgroup memory was approximately 29 MiB lower, with slower connection acquisition when traffic returned.
A small stars app used about 90 MiB less RSS with JDBC than with JPA and Hibernate, and reached its dashboard about four seconds sooner.
A few production performance problems we worked on at Google, Apple, and ServiceNow. Details have been anonymized and simplified.
Tell us what changed, what you have measured, and where the trail went cold.
Discuss a performance problem