Skip to content

Glossary

The JVM memory vocabulary in one page — every term as it is used across the calculator, the analyzers and the guides.

Reserved
Address space the JVM claimed from the OS. It costs nothing physical — a huge reserved number (the compressed class space reserves ~1 GiB by design) is normal and harmless.
Committed
Memory backed by RAM or swap. This is what pressures your container limit, and the number to read in NMT output.
RSS (Resident Set Size)
The pages of a process actually resident in RAM, as the kernel counts them — what kubectl top pod reports. Only touched pages count, so RSS can sit below committed on a fresh JVM and above the JVM's own accounting once glibc arenas grow.
Working set
The memory a process actively touches over a time window. Kubernetes eviction decisions use a working-set metric that excludes reclaimable page cache.
Heap
The garbage-collected memory where Java objects live, bounded by -Xmx or MaxRAMPercentage. The only region most dashboards show — and only part of the footprint (see the guide).
Young / old generation
The heap split used by generational collectors: new objects start young, survivors get promoted. Serial and Parallel use a fixed ratio; G1 resizes it adaptively; generational ZGC manages it internally.
Metaspace
Native (off-heap) storage for class metadata, roughly ~5 KiB per loaded class. Unbounded by default; grows with classloader leaks (see the deep dive).
Compressed class space
A region inside the metaspace reservation that keeps class pointers 32-bit. Reserved ~1 GiB, committed tens of MiB — never add it on top of metaspace.
Code cache
Native memory for JIT-compiled code, growing toward ReservedCodeCacheSize (240 MiB reserved by default with tiered compilation).
Direct memory
Native memory for NIO buffers (Netty, file/socket I/O), capped by MaxDirectMemorySize — which silently defaults to the heap size when unset.
Thread stack
Per-platform-thread stack, reserved at full -Xss (1 MiB default) but committed only as touched (typically 40–120 KiB). Virtual threads store stacks on the heap instead (see the guide).
GC structures
Collector-internal native memory: card tables, remembered sets, region metadata, relocation data. Scales with heap size and differs per collector (~1% Serial to ~6% ZGC).
NMT (Native Memory Tracking)
The JVM's own accounting of every byte it allocates, per subsystem. Enable with -XX:NativeMemoryTracking=summary, capture with jcmd, analyze with the NMT Analyzer.
cgroup memory limit
The kernel-enforced ceiling for a container (resources.limits.memory in Kubernetes, mem_limit in Compose). The JVM reads it for its ergonomics, including MaxRAMPercentage.
OOMKilled vs OutOfMemoryError
Exit 137 / OOMKilled is the kernel killing the container for exceeding its limit — no stack trace. java.lang.OutOfMemoryError is the JVM refusing an allocation against its own caps. Different culprits, different fixes (see the checklist).
Headroom
An explicit safety percentage on top of the modeled JVM footprint, covering what no model sees: glibc malloc arenas, JNI allocations, native spikes. The calculator defaults to 15%.
MaxRAMPercentage
Sizes the heap as a percentage of the cgroup limit — one source of truth, but only safe when the percentage is computed for that specific limit (see the guide).