C#.Net在超过内存使用量时关闭应用程序

本文关键字:应用程序 使用量 内存 Net | 更新日期: 2023-09-27 18:21:20

我有一个处理大量内存中数据的应用程序。现在,有时会发生的情况是,达到2GB/应用程序的内存限制,我的程序挂起。任务管理器中的内存使用率失控(从2GB到6GB不断波动)我想要的是,当内存使用量达到特定限制时,程序应该优雅地退出。我不想手动干预用户杀死应用程序。这可能吗?

C#.Net在超过内存使用量时关闭应用程序

您应该分配一个后台监控线程,该线程轮询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{}
      }
   }
}
}

请注意,我只是在这个页面上写了这个代码,所以它可能不太准确:)

当垃圾回收完成时,可以使用Garbage Collection Notifications发出警报。

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