use page_allocator for per-frame arenas to fix linear RSS growth
glibc malloc was not returning freed arena pages to the OS under
high-churn multi-thread load (~700 frames/sec across 2250+ subscriber
threads + 16 worker threads), causing linear RSS growth from 0 to
~3.5 GiB over 12h despite correct defer arena.deinit() everywhere.
page_allocator uses mmap/munmap directly — pages are guaranteed to
return to the OS on deinit(). ArenaAllocator batches small allocs
into chunks, so actual mmap calls per frame are ~1-3 (negligible).
long-lived state (caches, DB, ring buffer) stays on c_allocator.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>