text: public override void RecycleByteBlocks(byte[][] blocks, int start, int end){int numBlocks = Math.Min(maxBufferedBlocks - freeBlocks, end - start);int size = freeBlocks + numBlocks;if (size >= freeByteBlocks.Length){var newBlocks = new byte[ArrayUtil.Oversize(size, RamUsageEstimator.NUM_BYTES_OBJECT_REF)][];Array.Copy(freeByteBlocks, 0, newBlocks, 0, freeBlocks);freeByteBlocks = newBlocks;}int stop = start + numBlocks;for (int i = start; i < stop; i++){freeByteBlocks[freeBlocks++] = blocks[i];blocks[i] = null;}for (int i = stop; i < end; i++){blocks[i] = null;}bytesUsed.AddAndGet(-(end - stop) * m_blockSize);Debug.Assert(bytesUsed.Get() >= 0);}