BufferManager在不调用ReturnBuffer的情况下调用TakeBuffer

时间:2015-02-12 01:58:17

标签: c# .net

有人可以向我解释为什么以下内容适用于多次迭代:

static void Main(string[] args)
        {
            BufferManager _bufferManager = BufferManager.CreateBufferManager(100, 100);
            int count = 0;
            while (true)
            {
                byte[] b = _bufferManager.TakeBuffer(100);
                Console.WriteLine("Bytes taken: {0}", ++count * 100);
            }
        }

我期待缓冲区管理器抛出OutOfMemoryException或类似的东西,因为我只为它的池分配了100个字节。然而,这个循环将花费很多兆字节而没有问题。

我错过了什么吗?这是否意味着调用ReturnBuffer是可选的?

1 个答案:

答案 0 :(得分:1)

MaxBufferPoolSize和MaxBufferSize并不是指您的想法。

看看这里的答案,这比我说的要好得多!

MaxBufferPoolSize vs MaxBufferSize