static void Main(string[] args)
{
char[] a = new char[100000000];
char[] c = new char[100000000];
char[] d = new char[100000000];
char[] e = new char[100000000];
char[] f = new char[100000000];
char[] g = new char[100000000];
char[] h = new char[100000000];
char[] i = new char[100000000];
}当运行到 f 的时候出现:引发类型为outofMemory的异常,这是为什么?在申请内存上有限制?
800000000/1024(kb)/1024(M)这个程序运行完E后至少要有762M的内存!
2G内存的机器
.net只能使用1.2G内存
你想使用1.6G,机器先升级到4G再说引用
http://www.web521.com/asp.net/511168/T68653.shtml
一次性提交全部的虚拟内存放数据用.
处理数据时,用到哪里就哪里搬入内存.
2G内存
本身分配给你1.2G
你实际用的话,也开不到1.2G,因为GC要占据一些c++可以自己开,自己释放c#动态释放,所以就来问题了
每个char数组将占用100M*2的空间,5个就1G了。
我的系统2G,进程最大也只能占用到1G,再多就溢出了。
C#写出的程序占用内存都有上限。
不能使用文件或数据库方式来存吗,内存只缓存一小部分就可以了。
楼主的想用 c++开辟内存,然后c#引用在c++跟c#做内存共享应该没问题唯一不可预知就是这样能不能规避 1.2G的限制附 引用http://topic.csdn.net/u/20080624/12/78E85273-149E-4B43-80CF-6DAD3CDEC54B.html?t=fhwk97jh
你为什么非要申请那么大的内存?或者就如你所说,先用C++申请,再用C#处理
改用byte[],byte要比char占用空间小,例如'1'占8位,而1则只占1位;
优点:压缩空间,内存操作,效率高,
缺点:如果url数量增加,仍有可能内存溢出;解决方案2
存储到文件里,用到哪个url就读取哪个url,
优点:不会耗费内存资源,
缺点:反复进行IO操作,效率差;
我要做的是url进行去重,放到文件里解决不了去重问题,所以方案2也不可行!