
Memory
Reading a GC Log Line by Line
One run, one quantity, three answers. The allocation rate everyone derives from the default GC log is ten per cent low, and the log says why if you ask it correctly.
Page 1 of 2
Long-form writing on the JVM, its runtimes, and the frameworks built on them.

Memory
One run, one quantity, three answers. The allocation rate everyone derives from the default GC log is ten per cent low, and the log says why if you ask it correctly.

Runtime
The same pipeline cost 7.05 times the loop over eight elements and 1.31 times over a million. The ratio everyone quotes is a measurement at a trip count.

Runtime
Identical source, five call sites, one JDK 26 run - nothing allocated at the first and twelve bytes at three others. The wrapper is not what decides.

Diagnostics
Sixty seconds of default settings produced 4.3 MB, three quarters of it one event type, and none of it answered whether the application was lock-contended.

Runtime
One collection, reported as 2.275 ms by the GC log and 29.6 ms by the safepoint log. The gap is time to safepoint, and each instrument hides a different part of it.

Runtime
A hello-world program loads 423 classes before it prints anything. Where they come from, what the JVM does to each one, and how to see it.

Frameworks
Startup time is class loading, condition evaluation and JIT warmup in some proportion. Measure the split before reaching for a fix.

Diagnostics
A thread dump answers precise questions if you ask them precisely. What each state really means, and the traps that produce confident wrong diagnoses.

Memory
Sub-millisecond pauses are real, and they are not the whole cost. What the two collectors actually trade, and which numbers to compare instead.

Runtime
C2 can delete an object entirely by proving it never escapes. Here is when that works, when it silently stops, and how to measure the difference.