Rent and return arrays from a shared pool to avoid repeated allocations in buffer-heavy code.
Code Snippet
using System.Buffers;
public byte[] ProcessData(Stream stream)
{
// Rent a buffer from the shared pool
byte[] buffer = ArrayPool.Shared.Rent(4096);
try
{
int bytesRead = stream.Read(buffer, 0, buffer.Length);
// Process buffer...
return ProcessBuffer(buffer, bytesRead);
}
finally
{
// Always return the buffer
ArrayPool .Shared.Return(buffer);
}
}
Why This Helps
- Reuses memory instead of allocating new arrays
- Dramatically reduces GC collections in I/O-heavy code
- Thread-safe by design
How to Test
- Compare Gen0/Gen1 collections before and after
- Benchmark throughput under load
When to Use
File I/O, network operations, image processing, any scenario with frequent temporary buffers.
Performance/Security Notes
Always return buffers in a finally block. Rented arrays may be larger than requested.
References
Try this tip in your next project and share your results in the comments!
Discover more from Byte Architect
Subscribe to get the latest posts sent to your email.