☕ ByteDepth
  • Home
  • Articles
  • About
@ryanchen_dev
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.
↗ 14.2k views♥ 312 likes
Read Article
// Latest Posts
View all →
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
👨‍💻
Ryan Chen
Senior Java Engineer
8 years in the JVM trenches. I write about the things nobody documents well enough.
Popular This Month
01
ZGC vs G1GC in Production
14.2k views
02
Virtual Threads in Java 21
9.8k views
03
How the JIT Compiler Works
7.1k views
04
Off-Heap Memory Leaks
5.4k views
Browse By Topic
Java 21 JVM Spring Performance Architecture
Newsletter
One deep-dive per month. No spam.
All Articles

Every post, all topics

48 articles · Updated regularly

All Java 21 JVM Spring Performance Architecture
Back

👨‍💻
Ryan Chen
Senior Java Engineer · 8 years experience
I've worked at fintech startups and large-scale e-commerce platforms. Currently building distributed payment systems. I write when I find something genuinely worth explaining in depth.
Related Articles
Table of Contents
    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.

    ☕ ByteDepth
    Home Articles About RSS GitHub
    © 2025 Ryan Chen · bytedepth.dev