是否有一個直接的函數調用來確定併發GC是否已在我運行的運行時中啓用?我們有一個異構環境,我們需要記錄正在使用哪種模式,以便我們可以確定哪些系統需要修改。如何檢測併發GC是否正在運行.Net
我意識到我可以調查exe.config並手動檢查它,我只是想知道是否有一個屬性坐在某處暴露此信息而無需進行破解。
是否有一個直接的函數調用來確定併發GC是否已在我運行的運行時中啓用?我們有一個異構環境,我們需要記錄正在使用哪種模式,以便我們可以確定哪些系統需要修改。如何檢測併發GC是否正在運行.Net
我意識到我可以調查exe.config並手動檢查它,我只是想知道是否有一個屬性坐在某處暴露此信息而無需進行破解。
不幸的是,它看起來並不像有一種方法,如果有我期望看到它在這裏:System.Runtime.GCSettings.
。
除非你有一個很好的理由最好離開併發垃圾收集(作爲默認值)。
通常,唯一需要關注的是託管CLR的非託管應用程序(如SQL Server或IIS)。
您的應用程序是否可以通過編程方式更改exe.config中的gcConcurrent?如果不是這樣,看起來就像你說的那樣,從配置中讀取值是不太冒犯的方式(恕我直言)。
從來沒有少,我做了一些調查,並在.NET 4中開始,你可以使用ETW to detect garbage collection ETW events:
Windows事件追蹤(ETW)是一種跟蹤系統,以補充 的分析和調試支持由.NET Framework提供。 從.NET Framework 4開始,garbage collection ETW events 從統計的角度捕獲用於分析託管堆的有用信息。例如,GCStart_V1事件,這是 升高時無用單元收集將要發生時,提供 以下信息:
感謝您的徹底解答。內存泄漏狩獵(你不能連接內存泄漏分析器與併發GC,所以我們需要選擇性地使它嘗試和附加。 – Spence
垃圾收集通知http://msdn.microsoft.com/en-us/library/cc713687.aspx – Rohit
沒有收到回調是一種相當不精確的方式來測量GC是否是併發的... – Spence
它看起來像它是配置文件的一部分。看到這個鏈接幫助任何http://msdn.microsoft.com/en-us/library/yhwwzef8.aspx –