问题描述
我要开辟一个10G大小的内存区域给系统保存BMP文件使用,不想频繁分配和回收内存。10G内存算好了给100个图片使用,轮询使用,程序结束时一起释放掉。C++中可以按照BYTE分配内存,C#中应该如何写呢?
解决方案
解决方案二:
你牛B,要开10G内存区域!!!!!!
解决方案三:
能不能1、使用RamDisk内存模拟硬盘的软件,操作在此内存盘上,实现提高性能2、三星951PCISSD,理论性能是DDR3内存处理速度的三分之一,速度在1000M~1500M之间3、INETLPCISSD,价格高了些4、索泰PCISSD
解决方案四:
只要你的内存足够大byte[]buffer=newbyte[10L*1024L*1024L*1024L];
解决方案五:
直接开。.NET会在中间给你处理好的!
解决方案六:
引用3楼Poopaye的回复:
只要你的内存足够大byte[]buffer=newbyte[10L*1024L*1024L*1024L];
+1
解决方案七:
但是我不知道这10G内存什么时候被清除呀,我程序运行中要不断循环使用这个内存,并且使用指针方式访问的,如何我自己回收这部分内存呢?
解决方案八:
引用6楼s300的回复:
但是我不知道这10G内存什么时候被清除呀,我程序运行中要不断循环使用这个内存,并且使用指针方式访问的,如何我自己回收这部分内存呢?
你自己要分配内存,却不知道怎么用???
解决方案九:
当指向这段内存的引用全都废弃时,就自动回收了
解决方案十:
byte[]buffer=newbyte[10L*1024L*1024L*1024L];//开辟内存空间,在当前语句块没有运行完之前一直存在buffer=null;//强制回收内存空间。你如果觉得没回收干净,可以再gc回收一下。/*你要是需要内存块不手动回收一直存在,变量声明在program.cs内即可,在这里声明的变量只有你手动处理,否则一直到你关闭程序才回收,asp的话放在glable里面,但是asp长时间没有访问也会回收的,所以asp的话你自己需要考虑怎么做。*/
解决方案十一:
.net内存区域是自动化地动态(指数式快速)增长的,但是当你释放了一些内存数据之后它并不会立刻缩小,而是留给以后重复使用。也就是说,.net全都自动做这些。用不着你操心。
解决方案十二:
如果你能够在内存中保存一个10G的图片对象,你就尽管保存好了。当你根本没有加载大数据,那么初始内存占用也很小。当你用了大的数据,自动申请大块儿内存控件。当你释放你的大的数据对象,内存也不会收缩,而是会自动留给以后使用。而且内存管理系统会经常地合并、浮动几十万、上百万“小的”数据对象,为大型的对象留出大块儿空间来。如果你还非要c++的那些不安全、根本不具有内存浮动机制、动不动溢出的代码的话,那么就只好回去用c++了。
解决方案十三:
你如果担心内存会被net无意间释放,你可以定义成静态变量。静态变量始终驻留在程序的整个生命周期