Java · JVM · Backend Engineering
Going deep on
Java & the JVM
I write about Java internals, performance tuning, Spring Boot patterns, and distributed systems. No fluff — just engineering depth.
Java 21
JVM Internals
Spring Boot
Performance
Architecture
JVM Internals
Mar 2, 2025 · 18 min read
ZGC vs G1GC in Production: A Deep Dive into Pause-Time Tuning
After migrating a high-throughput fintech service from G1GC to ZGC, I documented every GC log, heap allocation trace, and p99 latency graph. Here's everything I learned about garbage collector selection, NUMA-awareness, and the real cost of GC pauses in latency-sensitive workloads.
Java 21
Virtual Threads in Java 21: Project Loom Finally Ships
Project Loom changes everything about blocking I/O in Java. I benchmarked virtual threads against platform threads across 50k concurrent connections.
Feb 18, 202512 min
Spring Boot
Spring Boot 3 AOT Compilation: Startup in Under 100ms
GraalVM native images with Spring AOT processing bring startup times down from seconds to milliseconds. A practical migration guide with gotchas.
Feb 5, 202515 min
Performance
Diagnosing Off-Heap Memory Leaks with async-profiler
When heap dumps show nothing but RSS keeps climbing, the leak is off-heap. Here's how I tracked down a DirectByteBuffer leak using async-profiler and perf.
Jan 22, 202510 min
Java 21
Sealed Classes and Pattern Matching: Exhaustive Switch in Practice
Java's sealed classes and pattern matching in switch expressions enable a functional-style approach to domain modeling that rivals Kotlin and Scala.
Jan 8, 20259 min
Spring Boot
Spring WebFlux vs Virtual Threads: Which Should You Use?
Now that Java 21 ships virtual threads, is reactive programming still worth the complexity? I built the same service both ways and measured everything.
Dec 14, 202414 min
JVM Internals
How the JIT Compiler Works: Tiered Compilation Explained
From interpreter to C1 to C2: a detailed look at how the HotSpot JIT compiler progressively optimizes your Java code at runtime using profiling data.
Nov 29, 202416 min
All Articles
Every post, all topics
48 articles · Updated regularly
All
Java 21
JVM
Spring
Performance
Architecture
About
Ryan Chen
Senior Java Engineer specializing in JVM internals, high-throughput systems, and distributed architecture. I write to share what I've learned the hard way.
👨💻
Background
I've been writing Java professionally since 2016. Over the past 8 years I've worked on everything from mobile payment processing systems handling 50k TPS to real-time fraud detection pipelines with sub-10ms latency requirements. I care deeply about understanding how the JVM actually works — not just how to use it.
This blog started as a place to dump my notes and has slowly turned into something people actually read. I write about the things I wish had been documented better when I was learning them.
Technical Skills
☕ Core Java
Java 8–21 · Project Loom · Records & Sealed Classes · Pattern Matching · Stream API · CompletableFuture · Memory Model
⚙️ JVM & Runtime
HotSpot · GraalVM · ZGC · G1GC · JIT Compilation · Bytecode Engineering · async-profiler · JFR & JMC
🌱 Frameworks
Spring Boot 3 · Spring WebFlux · Spring Security · Micronaut · Quarkus · Hibernate · MyBatis
📊 Observability
Micrometer · Prometheus · Grafana · Jaeger · OpenTelemetry · ELK Stack · Datadog
🏗️ Architecture
Microservices · Event Sourcing · CQRS · Saga Pattern · DDD · Kafka · gRPC · REST · GraphQL
☁️ Infrastructure
Kubernetes · Docker · AWS · Terraform · GitHub Actions · ArgoCD
Experience
-
2022–Now
Senior Java Engineer · FinanceCore Inc.
Designing and maintaining a distributed payment processing platform. Migrated core services from Java 11 to Java 21, introducing virtual threads and cutting thread-pool overhead by 40%.
-
2019–2022
Java Engineer · ShopStream
Built real-time inventory and order management systems for a high-traffic e-commerce platform. Introduced ZGC, reducing p99 GC pause times from 200ms to under 2ms.
-
2016–2019
Backend Developer · Nexus Labs
Full-stack Java development on microservices architecture. Introduced structured logging, distributed tracing, and automated performance regression testing.
Open Source
I maintain a small collection of utilities on GitHub, mostly JVM diagnostic tools and Spring Boot starter libraries. My most-starred project is jvm-lens, a CLI tool for visualizing GC logs and heap allocation patterns.
Contact
The best way to reach me is via Twitter/X at @ryanchen_dev or by email at ryan@bytedepth.dev. I try to respond to every message, though it may take a few days.
If you've found an error in an article or want to suggest a topic, please open an issue on the GitHub repo for this blog.