问题描述
为什麽C#内存管理类BufferManager可以无限制分配内存,不受最大内存大小的限制?直至内存耗光?代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.ServiceModel.Channels;usingSystem.Collections;namespaceBufferTest{classProgram{staticvoidMain(string[]args){BufferManagerbm=BufferManager.CreateBufferManager(128*1024*1024,16*1024*1024);ArrayListlist=newArrayList();Randomrd=newRandom();intj=0;for(inti=0;i<10000;i++){byte[]data=bm.TakeBuffer(16*1024*1024);if(data!=null){j++;Console.WriteLine("已成功分配的空间大小:"+j*16+"M");rd.NextBytes(data);}list.Add(data);}//防止自动回收ConsoleKeyInfok=Console.ReadKey();if(k.KeyChar=='y'){list.Clear();}else{Console.Write(list[rd.Next()].ToString());}}}}
解决方案
解决方案二:
BufferManager.CreateBufferManager这个应是你每次提取的内存数的最大值,与最小值吧,而不是他的总量。
解决方案三:
楼主的意思是:BufferManager可以分配的内存大小超过计算机物理内存大小?