首页 新闻 会员 周边

内存使用不断增加

0
悬赏园豆:50 [已解决问题] 解决于 2011-05-07 07:34

我的一个服务程序,从开始启动的15M左右,内存使用不断的增加。

主要有以下几个操作:

1. 实时扫描数据库的两张表,这个动作放在线程里面进行处理的

while(true)
{
Thread.Sleep(
100);
....
}
2.从远程网站上通过webservice取数据,经试验,这个会导致内存每2s增加1M左右。

3.程序里面有几个队列,作为缓冲区用,也有线程实时扫描这个几个队列。

我的使用率非常高的类,没有实例化IDisposable接口,感觉没必要实现这个接口,因为里面成员全都是值类型的,属于托管资源。

现在,我实在是找不到到底是什么原因导致内存没有释放,请各位大牛提提意见,在此跪谢啦~~~

哑吧湖大水怪的主页 哑吧湖大水怪 | 初学一级 | 园豆:13
提问于:2011-05-04 20:46
< >
分享
最佳答案
0

是否是集合不断的增加了内容,或者循环内使用,最好手动清空集合或对变量设置为null,Thread.Sleep(100);这么短的时间估计GC处理会有一定的问题

估计是GC压力太大或其他的内存泄露,关于GC参考CLR Via C#这本书对应的章节,理解了GC和内存泄露可以解决你这个问题

收获园豆:50
2012 | 高人七级 |园豆:21230 | 2011-05-05 08:21
队列只是相当于一个缓冲区,入和出的动作都有,被扫描的队列,大多时候为空。。。
CLR Via C# 这本书有,只不过看得太慢,还没看到那里去
PS:本人菜鸟~
哑吧湖大水怪 | 园豆:13 (初学一级) | 2011-05-05 08:35
用一些工具看看,参考 http://msdn.microsoft.com/en-us/library/ee658248.aspx
2012 | 园豆:21230 (高人七级) | 2011-05-05 12:42
好东西,刚看了下,里面介绍了许多工具。。。

上面的问题,我找到问题的实质了。。
由于我调用webService时,是动态编译,然后再调用,这样子很费时间,导致内存使用不断增加。。。
哑吧湖大水怪 | 园豆:13 (初学一级) | 2011-05-07 07:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册