Skip to content

Blog

Production error deep-dives — root cause, reproduction, and the fix that holds.

Remembered Sets and Card Tables: How Young GC Skips Old Gen

How does a young GC skip the whole of Old Gen? Card tables, write barriers and the G1 remembered set, measured on JDK 21, plus what JEP 522 changes in JDK 26.

Requested array size exceeds VM limit: What It Really Means

Requested array size exceeds VM limit has nothing to do with free memory. Where Java's real max array length sits, why ArrayList stops early, and how to fix it.

Java Memory Leak Patterns: Statics, Listeners, ThreadLocals

Static maps, forgotten listeners, ThreadLocals in pools, inner classes holding outer ones: the Java memory leak patterns I keep finding, with dump signatures.

Minor GC vs Full GC vs Major GC in Java, Explained

Minor GC vs full GC is clear. 'Major GC' isn't, and it means different things per collector. What each pause collects, what triggers it, and how to read it.

Class Loading, Linking and Initialization in the JVM

Class loading, linking and initialization in the JVM, step by step: when static blocks run, why constants skip init, and what Could not initialize class means.

Java Heap Size in Containers: -Xmx vs MaxRAMPercentage

Java heap size in a container isn't what -Xmx says. How the JVM derives it from the cgroup limit, why 75% heaps still get OOMKilled, and how to budget the rest.

Unknown Source Stack Trace in Java: Fix Missing Line Numbers

Unknown Source in a Java stack trace means the class has no SourceFile or LineNumberTable. How -g flags decide it, how to check with javap, and how to fix it.

Suppressed Exceptions in Java: try-with-resources Explained

A Suppressed: block in a Java stack trace is a second exception thrown while closing a resource. How try-with-resources records it, and how to read it.

Filter Java Stack Traces: Reflection and Proxy Frames

Filter a Java stack trace without hiding the bug: what reflection, proxy and interceptor frames mean, InvocationTargetException decoded, and how to cut noise.

OutOfMemoryError: Metaspace — Finding the Class Loader Leak

OutOfMemoryError: Metaspace is rarely fixed by a bigger MaxMetaspaceSize. How to find the class loader that won't die, plus the lab, the GC retries and the fix.