日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

什么是三色標記法

 

三色標記法是一種用于垃圾回收的算法,被廣泛應用于各類編程語言的垃圾回收器中,包括Go語言。

這種算法將對象劃分成三種顏色:

  1. 白色:表示對象是垃圾,可以被釋放。也就是說,這是那些從根(root)節點開始無法觸及的對象。

  2. 黑色:表示對象是存活的,并且這個對象引用的所有對象也已被訪問和標記。

  3. 灰色:表示對象是存活的,但是這個對象引用的其他對象還沒有被訪問和標記。

算法開始時,所有對象都標記為白色,然后從根節點開始遍歷,遍歷到的對象標記為灰色。接著選擇一個灰色對象,把它引用的所有白色對象都標記為灰色,然后把自己標記為黑色。這個過程一直進行,直到沒有灰色對象。此時,所有存活的對象都被標記為黑色,而所有死亡(不可達或無用)的對象都仍然是白色,GC會回收這些白色對象。

整個過程中的重點在于,如果所有的灰色對象指向的對象都已經處理(標記為黑色),則說明所有的可達對象都已訪問(標記為黑色),非黑即白,那么所有的白色對象為不可達對象,可被清理。

 

Go垃圾回收機制

Go語言的垃圾回收(Garbage Collection,簡稱GC)機制是自動回收系統中不再使用的內存的功能。這對于開發者來說非常方便,因為它省去了手動管理內存的需求。

垃圾回收機制在Go語言中的執行過程主要由以下幾個步驟組成:

  1. 標記清除:首先,垃圾回收器會標記出所有生存對象,然后清除所有沒有被標記的對象。

  2. 并發標記:在這個階段,垃圾回收器會在用戶goroutine后臺進行,并試圖在標記階段結束之前標記所有的生存對象。

  3. 標記終止:在這個階段,所有的用戶goroutine都會停止,垃圾回收器會進行最后的檢查并清除所有未標記的對象。

  4. 掃描:在清除了所有未標記的對象之后,垃圾回收器將進行內存清掃,歸還未使用的內存給操作系統。

其中,“并發標記清除”是Go的垃圾回收器的一大特點,它大部分時間與用戶的goroutine并發執行,只有在GC的開始和結束階段才會暫停goroutine。

Go的GC還支持開發者通過runtime的方法來進行設置和調整,比如設置GC百分比、手動觸發GC等,以滿足更精細化的內存管理需求。

 

 

Stop The World

    Go語言在執行垃圾回收時,會有兩次STW(Stop The World,簡稱停工)事件。

第一次停工事件發生在垃圾回收的"并發標記"階段開始之前,這次停工是為了確保所有的goroutine都寫回自己的棧信息,使垃圾回收器能夠正確地找到所有根對象。這次停工的時間通常非常短,因為對棧進行掃描的操作一般很快就能完成。

第二次停工事件發生在"并發標記"階段結束后,垃圾回收進入到"標記終止"階段。這次停工主要是為了處理在"并發標記"階段可能遺漏掉的對象。這個階段包括處理分配在"并發標記"階段的對象,處理在"并發標記"階段產生的寫屏障,以及對heap進行最后一次掃描。這次停工的時間與heap的大小、寫屏障的數量以及"并發標記"階段分配的對象數量有關,通常也會盡力控制在可以接受的范圍之內。

總的來說,Go語言盡量減少了垃圾回收中的停工時間,同時通過并發進行垃圾回收,使得Go語言的垃圾回收相較于其他一些語言的垃圾回收,對程序執行的影響更小。

 

以下情況可能會影響Go語言的STW (Stop The World) 的時間:

  1. 大量的內存使用:如果程序使用了大量內存,垃圾回收器需要掃描更多的對象,這就可能增加STW的時長。

  2. 大量的 Goroutine:每個 Goroutine 都會增加STW的時間,因為在兩次STW期間,它們的調度狀態和棧必須被掃描。

  3. 寫屏障的開啟狀態:在并發標記階段,一旦對象被灰度標記,如果應用程序試圖更改該對象,必須先開啟寫屏障來標記任何新分配或者即將被覆蓋的對象。因此,過多的寫操作會增加STW的時間。

  4. 分配速度:在垃圾回收過程中,如果內存分配的速度快于垃圾回收的速度,可能會導致內存空間不斷增長,從而延長STW的時間。

這些情形都可能導致STW時間的增加,因此在編寫代碼時,開發者需要盡量減少內存的使用,控制 Goroutine 的數量,注意內存分配的速度等,以更好地管理內存并提高程序的性能。

 

分享到:
標簽:語言
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定