没有必要反复的释放、重新创建对象。你可以仔细研究下Singleton模式,Form、WebBrowser 可以考虑单例模式,只是隐藏、显示即可。不用Dispose 再 new 创建。

解决方案 »

  1.   


    谁跟你说过Dispose就是释放内存?你那么多Dispose干什么呢?
      

  2.   

    首先我感觉程序结构很乱,没必要搞出这么多form,那么多 timer. 更没必要反复释放form和创建form.
    可以考虑包装control, 用 thread .
    对象dispose 后, 最好 xxx = null, 这样能确保被gc捕获。
     
      

  3.   

    开始就是这样,因为第一、二个窗体之后根本不需要显示了,也无所谓隐藏显示,进入第三个窗体以后就在那里刷新WebBrower,但是内存太大,才disposeWebBrower,后来连同窗体一起dispose,好像还是吞噬内存,迷糊了。
      

  4.   

    前两个窗体很简单,存在也应该不会影响很大,开始没有做第一、二个窗体照样吃内存,倒是=null没有做,这样才保险么?
      

  5.   

    我的确认为dispose会释放内存,要怎么才确保资源会被释放?
      

  6.   

    传说中的刷访问量的工具?你直接在form2用form3.Close() 关掉就行了啊,没有必要专门去释放.
    Close 方法默认会调用没有参数的 Dispose 方法
      

  7.   

    还有变量的申明位置也提些意见(你没有贴代码,我猜下)while(true)
    {
        sleep(10分钟);
        Form3 form3 = new Form3();//申明最好不放里边,不然又是崭新的一块地没了
        form3.Show();
    }
    改成
    Form3 form3;
    while(true)
    {
        sleep(10分钟);
        form3 = new Form3();//重用应该能够减少消耗
        form3.Show();
    }
      

  8.   

    恩···建议楼主直接 窗体.close就得了。
    然后明天再看看· 
    做程序要多测试
      

  9.   

    Dispose
    Nothing
    GC.Collect()这样还不行,就没什么办法了
      

  10.   

    为何要重复的创建WebBrowser?为何不在WebBrowser重复加载页面
    另外:如果频繁的访问页面,为何不直接走http协议。
      

  11.   

    你的程序占用内存过大,主要是因为使用过多timer空间。这控件相当占用内存。
      

  12.   

    你的问题主要出在程序结构不合理,要避免使用太多timer。释放内存用GC.Collect()