Dot-Net
C# 如果我以優先級 = RealTime 執行程序,GC 會發生什麼?
我有一個以實時優先級執行的 C# 應用程序。一切都很好,直到我在過去 2 天裡做了一些忙碌的改變。現在它會在幾個小時內耗盡記憶體。
我試圖找出這是否是我創建的記憶體洩漏,因為我消耗了比以前更多的對象,而 GC 根本無法收集它們,因為它以相同的優先級執行。
我的問題是 -當 GC 嘗試以實時優先級收集應用程序中的對象時(還有至少一個執行緒以最高執行緒優先級執行),它會發生什麼?
(PS 實時優先級我的意思是 Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime)
抱歉忘了告訴。GC 處於伺服器模式
GC 在您的程序中執行,因此具有相同的優先級。它的收集能力不受
PriorityClass應用程序執行的影響。這種記憶體洩漏幾乎可以肯定是由於您抓住了不斷增長的對像圖的根部,這阻止了 GC 收集它。
很可能 GC 無法收集它們,因為在某個地方您仍然持有參考。嘗試使用記憶體分析器(RedGate 有一個很好的,您應該嘗試試用版)來分析您的應用程序以找出 GC 不會收集您的對象的原因。