# streaming-huge-json Companion code for the rewritten post [Jackson Streaming API and JsonNode (Jackson 3)](https://ankurm.com/jackson-streaming-api-jsonnode/). A self-contained Maven module (not part of the root build). It generates a 1 GiB JSON array, then counts the `ERROR` records four ways under fixed `-Xmx` limits. ``` Jackson 3.2.4 (tools.jackson.core:jackson-databind, GA on Maven Central 2026-10-18) JDK Temurin 25.0.5 (LTS) ``` | Class | What it shows | |---|---| | [`GenerateHugeJson`](src/main/java/com/ankurm/jackson3/streaminghuge/GenerateHugeJson.java) | Writing 1 GiB with `JsonGenerator` under `-Xmx64m` | | [`Scan`](src/main/java/com/ankurm/jackson3/streaminghuge/Scan.java) | `stream`, `hybrid`, `tree`, `bind` (and the broken `hybrid-naive`) | | [`NestedTrap`](src/main/java/com/ankurm/jackson3/streaminghuge/NestedTrap.java) | The flat-object loop breaking on nested JSON; `skipChildren()` fix | | [`TruncatedFile`](src/main/java/com/ankurm/jackson3/streaminghuge/TruncatedFile.java) | What a cut-off file does to streaming vs tree | | [`ReadLimits`](src/main/java/com/ankurm/jackson3/streaminghuge/ReadLimits.java) | Default `StreamReadConstraints` values | ```bash cd streaming-huge-json ./scripts/run-all.sh --quick # small demos only ./scripts/run-all.sh # also generates target/huge.json (1 GiB, git-ignored) and runs the ladder ``` Captured output is in [`output/`](output). Memory figures are from one run on a 2-CPU, 8 GB container; `peakUsed` is sampled `total - free` heap and includes garbage not yet collected. Timings vary between runs; the pass/fail pattern per `-Xmx` is the stable part. Note on `output/bench.txt`: the `tree -Xmx= 6144 MB KILLED` line comes from a separate manual run (the first ladder run printed a blank line for it because the OS killed the JVM, exit 137); `scripts/bench.sh` now records that case itself.