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的异常,这是为什么?在申请内存上有限制?

解决方案 »

  1.   

    我需要申请1.6G的内存来存储一些URL信息,而且我测试不只是char有这个问题,所有的类型都有这个问题!希望高手解决啊!
      

  2.   

    我就开启了一个.net,剩下的所有程序全部关闭了!操作系统才占用多大内存!而且所有的类型申请空间的时候都是到800多兆就outofmemory了
      

  3.   

    到F报错前面共开了4亿多个空间,一个CHAR的空间点2个字节用4亿*2是八亿
    800000000/1024(kb)/1024(M)这个程序运行完E后至少要有762M的内存!
      

  4.   

    问题原因啊
    2G内存的机器
    .net只能使用1.2G内存
    你想使用1.6G,机器先升级到4G再说引用
    http://www.web521.com/asp.net/511168/T68653.shtml
      

  5.   

    C#里面,可不可以用WINDOWS的内存映射文件机制的?
    一次性提交全部的虚拟内存放数据用.
    处理数据时,用到哪里就哪里搬入内存.
      

  6.   

    .net 的gc机制造成的....
    2G内存
    本身分配给你1.2G
    你实际用的话,也开不到1.2G,因为GC要占据一些c++可以自己开,自己释放c#动态释放,所以就来问题了
      

  7.   


    每个char数组将占用100M*2的空间,5个就1G了。
    我的系统2G,进程最大也只能占用到1G,再多就溢出了。
    C#写出的程序占用内存都有上限。
      

  8.   

    那大家帮我想一下,如果这样行不行:把需要申请空间的部分(也就是底层的东西)用c++写(需要申请1.6G哦),剩下的用c#写。如果这样的话还会出现那样的问题吗?
      

  9.   

    楼主还是换别的思路来存URL吧,这么大的内存消耗不是办法。
    不能使用文件或数据库方式来存吗,内存只缓存一小部分就可以了。
      

  10.   

    现在就是用位映射存的URL,用1.6G的内存可以存储20亿的URL,这样就可以完全的去重了
      

  11.   

    也不是没可能
    楼主的想用 c++开辟内存,然后c#引用在c++跟c#做内存共享应该没问题唯一不可预知就是这样能不能规避 1.2G的限制附 引用http://topic.csdn.net/u/20080624/12/78E85273-149E-4B43-80CF-6DAD3CDEC54B.html?t=fhwk97jh
      

  12.   

    似乎LZ是有几十亿URL的,做spider的
    你为什么非要申请那么大的内存?或者就如你所说,先用C++申请,再用C#处理
      

  13.   

    解决方案1  
    改用byte[],byte要比char占用空间小,例如'1'占8位,而1则只占1位;
    优点:压缩空间,内存操作,效率高,
    缺点:如果url数量增加,仍有可能内存溢出;解决方案2  
    存储到文件里,用到哪个url就读取哪个url,
    优点:不会耗费内存资源,
    缺点:反复进行IO操作,效率差;
      

  14.   

    我目前用的类型为 bitArray,这个仍然有申请空间问题!我需要的是内存空间,1.6G,无论是char[]还是byte[]都需要申请1.6G,所以方案1不可行;
    我要做的是url进行去重,放到文件里解决不了去重问题,所以方案2也不可行!
      

  15.   

    那就用unsafe代码了。和C++一样,自己申请,自己释放
      

  16.   

    其实...感觉更好的方式是采用内存数据库机制将url存到内存数据库中