簡體   English   中英

C#.Net Close應用程序超出內存使用量

[英]C# .Net Close application on exceeding memory usage

我有一個處理大量內存數據的應用程序。 現在,有時會發生什么情況,即達到2GB / app的內存限制,並且我的程序掛起。 任務管理器中的內存使用情況非常混亂(從2GB到6GB連續波動)。我想要的是,當內存使用量達到特定限制時,程序應該正常退出。 我不希望用戶手動殺死應用程序。 這可能嗎?

您應該分配一個后台監視線程,該線程輪詢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()以查看當前使用了多少內存,如果內存過多,請采取適當的措施。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM