之前开了一个贴子,可能我没描述清楚,所以问题仍没有解决
 目前项目一开始运行还比较正常,但是随着运行时间长了,整个系统运行就会越来越慢,主要体现
在窗体界面显示上面,窗体上的控件就像一个一个显示出来的一样,不像VB等那样显示的很干脆。 
 项目中操作人员操作比较频繁,之间会弹出几个窗体,也用到了一些静态类,也调用了第三方接口
现在感觉无从下手,不知道该怎么去找到问题的所在,所以请教大家,希望大家给点建议

解决方案 »

  1.   

    内存增长的厉害,有的都达到了250M了
    NET不是自动回收内存资源的吗,怎么不回收的呢?
    检查代码看不出什么问题,要是能看出什么异常就不会来向大家咨询了
      

  2.   

    .NET每隔一段时间会检测系统是否存在没有引用的内存资源,如果有的话就释放这些资源。有时候是需要手动回收的。
      

  3.   

    对于已经非常熟悉.Net的人,太复杂的类,加上过于面向过程的编程思想(路),自己对于回收机制应该还是持怀疑态度的,所以我本人还是非常愿意研究的探讨对象的生存状态的,所以有许多人探讨生命周期的问题.如果不是太明白,反正我是不太明白,所以应该尽量使对象的生命周期放在自己可操控的泛围内,尽量不要去触碰雷区我过去一直守一个原则,"反正我也不清楚,结果不可预料,那么就不让它发生"PS:
    另外我个人的刚刚得到的经验是,不要去触碰析构函数,对于有Dispose方法的对象,自己new出来时,能using就using,要么就把这东西扔到一个上级的组件集合中,让组件集合处理对它的销毁问题,如果你对象的生命周期把析构函数也做为它控制其他对象生命的一部分的话,那么就悲衰了.
    这是我昨天刚得到的经验,因为我思考过SP1234先生的一段话,并试验过.本人语文不太好,可能说不清楚意思.反正就一个原则吧,如果你new出来,你就应该知道它什么时候被销毁,不要指望Application.Exit后.
      

  4.   

    那如果程序中用到了静态类
    比如说 有这样一个静态类public static class CBSpeech
        {
    public static bool Init(string EmpName, string HospName)
            {
            ...   
     return true;
            }
    }
    程序可能多次调用CBSpeech.Init("","");这样的话内存什么时候回收呢
      

  5.   

    被创建的对象,引用为0时
    因为有构造函数的存在,对于我们自己定义的类,我们可以知道这个类的构造函数又干了些什么,对于第三方的类,你不可能知道他干了点什么.对于.Net自己提供的类,没研究过的话也不知道.昨天有个玩贴,耍人贴,他在一个for中创建自己的对象,只new,它的new中new一个新的Form,又Show了,他可能不懂,也可能是耍人玩的,因为Form在Show后会被加入的Application.OpenForms中的,也就是说这个Form肯定是不会因为在for中创建的对象失去最后一个引用而消失的.这种就是陷井.你的软件中有类似这种陷井吗?另外,我在给你的第一个回复中已经说了:"建议找专家现场弄吧,一般合格的产品不会出现这种问题."建议,不要自己找原因了,因为你自己对资源的回收都有疑问.
      

  6.   

    被赋值后,等待下次GC.Collect时,有人认为几秒内.我试了,没析构的,也许就几秒的事,高深点的知道,如果没重要资源必须回收的话,回不回收无所谓,怕就怕遇到和我一样这种半瓶子醋的,怕不回收,扔个析构函数在里面,那您就慢慢等吧
    反正程序结束前肯定回收
    因为对于重要资源的回收还有上层.和Win98不一样,如果有Win98中某个程序有资源没回收(特别是GDI资源,不过98还是宽松了许多,如果是Win3.1,你还得通知你的上下级程序,系统会通过WinMain把上级传给你),马上所有的窗口都会黑,嘿嘿....
    Net这种大公司的东西加上越来越高的操作系统版本,对于程序员犯的这种低级错误不可能没防范,不过大公司也不可能考虑那么周到,还是自律吧..Net的垃圾回收,不是让你肆无忌惮的用
      

  7.   

    非常感谢jointan的大力帮忙。
    我从事开发不是很长,jointan所说的一时还不能完全理解。
    自己再慢慢摸索吧
      

  8.   

    需要自己控制资源,特别是Form对象,用完了一定要释放,不要等GC,这个不靠谱,不知道要等到什么时候。
      

  9.   

    VB这么好用的语言,被微软给干没了。
    bs
      

  10.   

    这个主要是你代码或者架构或者硬件的问题。跟.net的GC有个毛关系。看到上面那么多人说的都是废话。
      

  11.   

    在VS开个性能分析,然后操作操作,然后分析下看性能耗费在哪了
    主要看下IO操作部分