我的存储服务器最近在做测试阶段,刚开始运行的时候是没什么问题,能够正常的上传文件,但是运行了一段时间过后比如十个小时,就抛出了:引发类型为“System.OutOfMemoryException”的异常。我把异常写到日志文件里面去,记录到抛异常的位置是:
        public RemoteClient(Socket sock)
        {
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            this.M_socket = sock;
            Console.WriteLine("Client Connected!{0}<--{1}", sock.LocalEndPoint,sock.RemoteEndPoint);
            streamToClient = new NetworkStream(sock);
            buffer = new byte[BufferSize];    //   在这里抛出了System.OutofMemoryException的异常        
        }
    
   我的网上查了资料,都说是内存溢出了,这样的情况怎么解决?
   注:我的缓存定义大小为   BufferSize=1024 * 1024

解决方案 »

  1.   

    在iis的应用程序池里面,勾选回收工程进程另外,对象使用完毕应当立即销毁以释放所占用的资源
      

  2.   

    我的项目是应用程序,和iis好像没关系吧?
    那我应该怎样强行垃圾清理呢?可有示例代码?
      

  3.   


    及时释放对象,
    或者
    GC.Collect();
    http://msdn.microsoft.com/zh-cn/library/xe0c2357.aspxGC 类
    http://msdn.microsoft.com/zh-cn/library/system.gc.aspx
      

  4.   

    程序抛出这个异常的时候你什么事情都做不了。这是常识。唯一的办法是抓取进程的dump,然后分析你哪里代码写错了,造成了内存泄漏。.NET GC也不是万能的,还是需要代码漂亮干净。这种事情一般你都需要找微软技术支持,http://support.microsoft.com。一般人没有能力看dump。