我有一个WPF程序,每当打开窗体后,查看程序所占用的内存资源都会相应增加,但关闭窗体时,资源并没有得到释放。现在是想,通过调用垃圾回收把内存释放,但问题是,程序中有很多辅助运行的静态变量资源,如果使用垃圾回收的话,假如某些静态资源长时间没有被使用的话,会不会被释放掉呢?还有另一种方案是,把ViewModel类都继承Idisposable接口使其释放支援,请问那一种方案可行?前提是不要释放掉静态变量资源。

解决方案 »

  1.   

    你窗体是如何打开的?又是如何关闭的?
    垃圾回收是有周期的,而不是立刻执行的,你可以手动调用一下GC.Collect看看是否有回收。静态的那些资源应该是不会被回收的
      

  2.   

    窗体是正常Show(),Close(),我想窗体的资源应该在Close时被释放了,但窗体绑定的ViewModel应该并没有被释放,由于ViewModel中存有一定的数据,所以程序的内存占用上升比较明显。