Journal
Work
24 May 2024#java#jvm#perf#ops 1 min read

Climbing the heap

How a workbook engine eats memory, and where the real limit was.


The memory ladder over fifteen months: more heap in March and a switch to ZGC, an out-of-memory handler in May, the heap raised again, and a year later the cap on byte arrays raised again.

The real limit was reading whole workbooks into memory. Streaming readers changed the shape of the problem from "how big is the file" to "how wide is the row", and the ladder stopped.

The mistake

Each rung bought time; none of them was the fix.

Client engagement, 2021 to 2026. Names, identifiers and internals are generalised.

Related