C#.Net关闭超出内存使用量的应用程序

时间:2013-07-05 07:23:07

标签: c# .net

我有一个处理大量内存数据的应用程序。现在,有时会发生内存限制为2GB / app并且我的程序挂起。任务管理器中的内存使用量变得混乱(连续波动从2GB到6GB) 我想要的是当内存使用量达到特定限制时,程序应该优雅地退出。我不想手动干预用户查杀应用程序。这可能吗?

2 个答案:

答案 0 :(得分:6)

您应该分配一个后台监控线程,它会轮询System.Diagnostics.Process.GetCurrentProcess()。PrivateMemorySize64,然后根据返回的大小进行操作。

例如

public class MonitoringThread : Thread{
...

bool working = true;
void run(){
   while(working){
      long size = Process.GetCurrentProcess().PrivateMemorySize64;
      if (size > 2000000000){
         //do anything
      }
      else {
         try{
            Thread.Sleep(1000);
         }
         catch{}
      }
   }
}

}

请注意,我刚刚在此页面中编写了此代码,因此可能不太准确:)

答案 1 :(得分:2)

完整的垃圾收集完成后,您可以使用Garbage Collection Notifications收到警报。

作为对此的回应,您可以检查GC.GetTotalMemory()以查看当前使用了多少内存,如果内存太高则采取适当的操作。