亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c# 調用 GC.Collect 的正確方法

c# 調用 GC.Collect 的正確方法

C#
慕雪6442864 2023-08-20 15:51:03
我有一個執行復雜處理并創建太多對象的應用程序,我想在處理完成后釋放內存。我目前正在我的應用程序中的 try catch 塊中調用 GC.collect,并且// 這個函數在靜態類中public static void Collect(){    try    {        GC.Collect    }    catch(Exception)    {        //    }}這是調用垃圾收集器的正確方法嗎?我應該直接調用它嗎?什么是最佳使用實踐?
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

C# 是一種垃圾收集語言。垃圾收集器為您分配資源,并在不再使用時回收它們。

GC.Collect()除非你有充分的理由,否則你根本不應該調用- 垃圾收集器很聰明,并且只會在它認為需要時運行。

這可以由多種情況觸發,如文檔中所示:

當滿足以下條件之一時,就會發生垃圾收集:

  • 系統物理內存不足。這是通過操作系統發出的內存不足通知或主機指示的內存不足來檢測的。

  • 托管堆上分配的對象使用的內存超過了可接受的閾值。該閾值隨著進程的運行而不斷調整。

  • 調用 GC.Collect 方法。在幾乎所有情況下,您不必調用此方法,因為垃圾收集器連續運行。此方法主要用于特殊情況和測試。

重要的是,垃圾收集可以導致所有正在運行的線程暫停,以便它可以分析堆中的所有對象以查看它們是否仍然需要。這需要時間,如果您在不需要時頻繁運行它,可能會對程序的性能產生負面影響。


查看完整回答
反對 回復 2023-08-20
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

您不需要將其包裝在public static方法中,只需在需要時調用它即可:

//?Time?to?release?memory!
GC.Collect();
查看完整回答
反對 回復 2023-08-20
  • 2 回答
  • 0 關注
  • 523 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號