簡體   English   中英

GC 開始時觸發事件

[英]trigger an event when GC start

嗨,c# 中的一個小問題,是否可以在垃圾收集器開始工作時觸發事件?

如果是,如何?

想象一下這段代碼:

while(True){

    if (Gc.IsWorking())
    {
        // some code
    }
}

在單獨的線程上運行並檢測 gc 何時工作。 我知道當 gc 觸發整個應用程序時,整個應用程序會暫停,但是我們可以如何為某些代碼部分禁用它,比如使用unsafe ,這樣我們就可以讓那個線程工作嗎?

GC.TryStartNoGCRegion可以暫停 GC。 但這是針對需要非常低且可預測的延遲的非常特殊的場景。 我認為目的是擁有一組旋轉的活動節點,並在節點離線旋轉時執行任何 GC。

也可以使用本機代碼。 我不希望 GC 知道或關心本機線程。

但也不是應該在任何常見場景中使用的解決方案。 對於 99% 的用例,優化分配模式可能就足夠了。

暫無
暫無

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

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