求救,C# 内存只增加,不减少,最后报内存不足 本帖最后由 thunderwolf 于 2010-11-22 12:48:25 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 粗看了下。(1)多线程 程序中,这个设置有时可能会不起作用。frmMain.connCount = frmMain.connCount - 1;我们不知,但你可能知道这意味着什么。(2) service. 不是由你创建的,你为何要关了它。(3) sw.Close(); sr.Close(); ns.Close(); if (service != null) { service.Close(); } 这个代码从第一句开始出错时,后边的资源事实上没有释放。建议一个一个加上保护。 谢谢楼上的回答!1,frmMain.connCount = frmMain.connCount - 1; 只是一个显示作用,不碍事2、 service. 不是由你创建的,你为何要关了它担心会耗资源,不知道对不对?所以一起给关闭了。3、sw.Close(); sr.Close(); ns.Close(); if (service != null) { service.Close(); }一个一个的保护,没有想到这点。我加上!除了第3小点,可以采纳。还有其他的原因会导致内存溢出吗? 看看是不socket或stream这两个东西有用完没有释放的 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 强制回收下 肯定是资源没释放啊.为什么不用using呢?如果确实是这块代码的问题,我建议你在finnally里边再加一个try catch ,记录一下日志 嗯!我估计也是资源没有释放,但还不确定是哪一块没有释放!您说的using 是如何使用的a catch (Exception eMsg) { frmMain.connCount = frmMain.connCount - 1; }catch 里啥都没做??怎么也打个日志吧,知道出异常了 我估计也是这问题,我建立的TCP是长连接,一直不释放的。但还有什么地方没有释放我就没有找不出来了 这么找不是个办法,LZ装个.Net Memory Profile吧,查一下托管部分的内存占用,看是哪部分没有释放! winform中的可见即可得控件 HttpWebResponse取到的验证码与验证机制中的不符。 explorer.exe 应用程序错误__0x0660d370 怎么实现自动开关机的问题? COM+组件和分布式调用,急 取xml特定节点的值,在线等,40分 ???C#里面是如何将一个字符转换为ASCLL码的? 删除影起的问题 怎样按字母顺序(ABCDEF)动态添加控件 一个委托的设计 一个关于异常的问题。 大家看C#入门经典都是怎么看的?
(1)多线程 程序中,这个设置有时可能会不起作用。
frmMain.connCount = frmMain.connCount - 1;
我们不知,但你可能知道这意味着什么。
(2) service. 不是由你创建的,你为何要关了它。
(3) sw.Close();
sr.Close();
ns.Close();
if (service != null)
{
service.Close();
} 这个代码从第一句开始出错时,后边的资源事实上没有释放。建议一个一个加上保护。
1,frmMain.connCount = frmMain.connCount - 1;
只是一个显示作用,不碍事2、 service. 不是由你创建的,你为何要关了它
担心会耗资源,不知道对不对?所以一起给关闭了。3、
sw.Close();
sr.Close();
ns.Close();
if (service != null)
{
service.Close();
}一个一个的保护,没有想到这点。我加上!
除了第3小点,可以采纳。还有其他的原因会导致内存溢出吗?
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
强制回收下
{
frmMain.connCount = frmMain.connCount - 1; }
catch 里啥都没做??
怎么也打个日志吧,知道出异常了