How would you implement a custom memory allocator optimized for highly concurrent, short-lived allocations?