本帖最后由 thunderwolf 于 2010-11-22 12:48:25 编辑

解决方案 »

  1.   

    粗看了下。
    (1)多线程 程序中,这个设置有时可能会不起作用。
    frmMain.connCount = frmMain.connCount - 1;
    我们不知,但你可能知道这意味着什么。
    (2) service. 不是由你创建的,你为何要关了它。
    (3)  sw.Close();
                    sr.Close();
                    ns.Close();
                    if (service != null)
                    {
                        service.Close();
                    }    这个代码从第一句开始出错时,后边的资源事实上没有释放。建议一个一个加上保护。
      

  2.   

    谢谢楼上的回答!
    1,frmMain.connCount = frmMain.connCount - 1;
     只是一个显示作用,不碍事2、 service. 不是由你创建的,你为何要关了它
    担心会耗资源,不知道对不对?所以一起给关闭了。3、
    sw.Close();
      sr.Close();
      ns.Close();
      if (service != null)
      {
      service.Close();
      }一个一个的保护,没有想到这点。我加上!
    除了第3小点,可以采纳。还有其他的原因会导致内存溢出吗?
      

  3.   

    看看是不socket或stream这两个东西有用完没有释放的
      

  4.   


     
    while (str != null)
                    {
                        string[] kk = str.Split(',');                    #region  出入口接收类   4个
                        //01 入口收费站查余额 
                        if (kk[0].Equals("entrybalance"))
                        {
                            strreturn = DecideBalanceEntry.GetBalance(str);
                            sw.Write(strreturn);
                            sw.Flush();
                        }                    //02 入口 
                        else if (kk[0].Equals("entry"))
                        {
                            Entry.ReceiveData(str);
                            entrycount++;
                        }
                       str = sr.ReadLine();
                    }
                }//end try
    在while中是否可以加一个
    GC.Collect
     强制回收下
      

  5.   

    肯定是资源没释放啊.为什么不用using呢?如果确实是这块代码的问题,我建议你在finnally里边再加一个try catch ,记录一下日志
      

  6.   

    嗯!我估计也是资源没有释放,但还不确定是哪一块没有释放!您说的using 是如何使用的a 
      

  7.   

     catch (Exception eMsg)
                {
                    frmMain.connCount = frmMain.connCount - 1;            }
    catch 里啥都没做??
    怎么也打个日志吧,知道出异常了
      

  8.   

    我估计也是这问题,我建立的TCP是长连接,一直不释放的。但还有什么地方没有释放我就没有找不出来了
      

  9.   

    这么找不是个办法,LZ装个.Net Memory Profile吧,查一下托管部分的内存占用,看是哪部分没有释放!