欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Golang的垃圾回收(GC)機(jī)制-創(chuàng)新互聯(lián)

轉(zhuǎn)載自https://blog.csdn.net/liangzhiyang/article/details/52670021

目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、商城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

請先閱讀 golang的goroutine調(diào)度機(jī)制然后再到這里

golang的垃圾回收采用的是 標(biāo)記-清理(Mark-and-Sweep) 算法

就是先標(biāo)記出需要回收的內(nèi)存對象快,然后在清理掉;

在這里不介紹標(biāo)記和清理的具體策略(可以參考https://lengzzz.com/note/gc-in-golang),只介紹 GC過程是怎么調(diào)度的以及stw相關(guān)

這個(gè)算法,會(huì)導(dǎo)致 stw (stop the world)的問題,中斷用戶邏輯

觸發(fā)GC機(jī)制

1.    在申請內(nèi)存的時(shí)候,檢查當(dāng)前當(dāng)前已分配的內(nèi)存是否大于上次GC后的內(nèi)存的2倍,若是則觸發(fā)(主GC線程為當(dāng)前M)

2.    監(jiān)控線程發(fā)現(xiàn)上次GC的時(shí)間已經(jīng)超過兩分鐘了,觸發(fā);將一個(gè)G任務(wù)放到全局G隊(duì)列中去。(主GC線程為執(zhí)行這個(gè)G任務(wù)的M)

每當(dāng)觸發(fā)的時(shí)候,在主GC線程中就會(huì)走如下的GC流程:

1.    stop the world,等待所有的M休眠;此時(shí)所有的業(yè)務(wù)邏輯代碼都停止

2.    標(biāo)記:分配gc標(biāo)記任務(wù),喚醒 gcproc個(gè) M(就是第一步休眠的那些),分別做這個(gè),直到所有的M都做完,才結(jié)束;并且所有M再次進(jìn)入休眠

3.    清理:有一個(gè)單獨(dú)的goroutine去清理已經(jīng)標(biāo)記的內(nèi)存對象快

4.    start the world,設(shè)置gcwaiting=0,喚醒所有的M(不會(huì)超過P個(gè)數(shù))

對于上面的三個(gè)步驟,分別解釋:

stop the world:

1.    設(shè)置gcwaiting=1,這個(gè)在每一個(gè)G任務(wù)之前會(huì)檢查一次這個(gè)狀態(tài),如是,則會(huì)將當(dāng)前M休眠;

2.    如果這個(gè)M里面正在運(yùn)行一個(gè)長時(shí)間的G任務(wù),咋辦呢,難道會(huì)等待這個(gè)G任務(wù)自己切換嗎?這樣的話可要等10ms啊,不能等!堅(jiān)決不能等!
所以會(huì)主動(dòng)發(fā)出搶占標(biāo)記(類似于上一篇),讓當(dāng)前G任務(wù)中斷,再運(yùn)行下一個(gè)G任務(wù)的時(shí)候,就會(huì)走到第1步

3.    一直等待所有的M進(jìn)入休眠,此時(shí)所有的業(yè)務(wù)邏輯代碼都停止

標(biāo)記:

1.     根據(jù)gcproc的個(gè)數(shù),分配成gcproc任務(wù)段;喚醒gcproc-1個(gè)M來執(zhí)行(當(dāng)前M也算一個(gè))

2.    對于一個(gè)M,喚醒前設(shè)置它的helpgc標(biāo)記,喚醒之后這個(gè)M會(huì)立馬判斷這個(gè)標(biāo)記,如是,則開始做分配給自己的標(biāo)記任務(wù),如果先做完了,就會(huì)從別的M里面找一些來做

3.    等每一個(gè)M都做完,會(huì)再次進(jìn)入休眠

清理:

1.    通過設(shè)置參數(shù),可以以一個(gè)單獨(dú)goroutine  運(yùn)行,這個(gè)功能是在1.3版本之后增加的,這樣的話就直接到下一步了,清理過程不是stw的

2.    也可以串行的在主GC線程執(zhí)行;這樣的話則清理過程也是stw的,

start the world:

1.    設(shè)置gcwaiting=0

2.    喚醒P個(gè)M來繼續(xù)做G任務(wù)(此時(shí)沒有helpgc標(biāo)記),業(yè)務(wù)邏輯代碼開始

綜上:

是基于1.4版本的,GC過程在標(biāo)記過程是(STW)的

在1.5版本里面對GC做了很大的優(yōu)化;采用三色標(biāo)記,將標(biāo)記過程細(xì)化成三段,只有前后的兩段是stw的;極大地縮短了gc的stw時(shí)間

Golang的垃圾回收(GC)機(jī)制

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

新聞名稱:Golang的垃圾回收(GC)機(jī)制-創(chuàng)新互聯(lián)
本文URL:http://www.aaarwkj.com/article34/dddjse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、域名注冊、App設(shè)計(jì)、定制開發(fā)、關(guān)鍵詞優(yōu)化、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
日韩欧美高清一区二区| 亚洲精品免费福利视频| 中日韩中文字幕一区二区| 国产一区二区三区不卡av| 五月天亚洲综合小说网| 色哟哟国产精品一区自拍| 妇女人妻丰满少妇中文字幕| 91国产视频在线观看免费| 啊啊…嗯嗯…用力免费观看视频| 99国产精品的热久久| 久久精品国产av极品| 亚洲中文无码亚洲人vr在线| 国产精品18禁一区二区三区| 亚洲五月婷婷久久综合| 日本亚洲美丽少妇天堂| 国产三级全黄在线播放| 久久精品一本久久99精品| 亚洲精品一级理论片对面| 久久精品国产91麻豆| 亚洲精品一区二区免费看| 亚洲一区二区三区香蕉不卡| 国产黄色大片在线关看| 九九视频在线观看免费观看| 日本大片在线一区二区三区| 午夜视频在线观看日韩| 两性色午夜视频免费网站| 日本a亚洲中文字幕永远| 日本特黄高清免费大片| 亚洲精品国产亚洲精品| 亚洲av乱码一区二区三区观影| 一区二区在线日韩视频| 国产大学生情侣在线视频| 中文字幕熟女人妻另类癖好| 在线播放亚洲一区二区三区| 欧美日韩一区二区三区色| 日韩在线不卡中文字幕| 国产精品一级在线播放| 国产日韩欧美一区二区丝袜| 一本之道高清久久久首页| 粉嫩欧美一区二区三区| 十八女毛片一区二区三区|