Heap fragmentation when using byte arrays
I have a C# 4.0 application (single producer/single consumer) which transfers huge amount of data in chunks. Although there's no new memory allocation I run out of memory after a while. I profiled memory using Redgate memory profiler and there are a lot of free memory there. It says free memory cannot be used because of fragmentation. I use a blocking collection as the buffer and byte arrays as the members: BlockingCollection<byte[]> segments = new BlockingCollection<byte[]>(8); // producer: segments.Add(buffer); // consumer: byte[] buffer = _segments.Take(); How can I avoid managed memory