Usually for an operation like this we don't pool buffers for decompression, we allocate one, for each thread doing decompression and then dellocate when done (or let GC pick it up), Decompression buffers unlike uncompressed data don't need to be pipelined deeply.