Go中內(nèi)存釋放的改進(jìn)是怎樣的

這篇文章主要為大家分析了Go中內(nèi)存釋放的改進(jìn)是怎樣的的相關(guān)知識點,內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學(xué)習(xí)“Go中內(nèi)存釋放的改進(jìn)是怎樣的”的知識吧。

建寧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

一直以來 go 的 runtime 在釋放內(nèi)存返回到內(nèi)核時,在 Linux 上使用的是 MADV_DONTNEED,雖然效率比較低,但是會讓 RSS(resident set size 常駐內(nèi)存集)數(shù)量下降得很快。不過在 go 1.12 里專門針對這個做了優(yōu)化,runtime 在釋放內(nèi)存時,使用了更加高效的 MADV_FREE 而不是之前的 MADV_DONTNEED

這樣帶來的好處是,一次 GC 后的內(nèi)存分配延遲得以改善,runtime 也會更加積極地將釋放的內(nèi)存歸還給操作系統(tǒng),以應(yīng)對大塊內(nèi)存分配無法重用已存在的堆空間的問題。不過也會帶來一個副作用:RSS 不會立刻下降,而是要等到系統(tǒng)有內(nèi)存壓力了,才會延遲下降。需要注意的是, MADV_FREE 需要 4.5 以及以上內(nèi)核,否則 runtime 會繼續(xù)使用原先的 MADV_DONTNEED 方式。

比如,我最近就遇到了這個問題:

Go中內(nèi)存釋放的改進(jìn)是怎樣的

幾臺服務(wù)的請求量差別并不大,可以明顯看到 25(4.14 內(nèi)核,其他幾臺都是 3.10 內(nèi)核)的內(nèi)存釋放看起來很慢,但是 HEAP 占用顯示卻正常:

順便說下,4.1 以上內(nèi)核,最為引人注目的特性就是 eBPF,通過一個內(nèi)核內(nèi)置的字節(jié)碼虛擬機,可以完成數(shù)據(jù)包過濾、調(diào)用棧跟蹤、耗時統(tǒng)計、熱點分析等等高級功能,是 Linux 系統(tǒng)的性能分析利器。

Go中內(nèi)存釋放的改進(jìn)是怎樣的

當(dāng)然 go 1.12 為了避免像這樣一些靠判斷 RSS 大小的自動化測試因此出問題,也提供了一個 GODEBUG=madvdontneed=1 參數(shù)可以強制 runtime 繼續(xù)使用 MADV_DONTNEED:runtime: provide way to disable MADV_FREE。但是顯然正常情況下,我們都應(yīng)該優(yōu)先使用 MADV_FREE。

go適合做什么

go是golang的簡稱,而golang可以做服務(wù)器端開發(fā),且golang很適合做日志處理、數(shù)據(jù)打包、虛擬機處理、數(shù)據(jù)庫代理等工作。在網(wǎng)絡(luò)編程方面,它還廣泛應(yīng)用于web應(yīng)用、API應(yīng)用等領(lǐng)域。

關(guān)于“Go中內(nèi)存釋放的改進(jìn)是怎樣的”就介紹到這了,更多相關(guān)內(nèi)容可以搜索創(chuàng)新互聯(lián)以前的文章,希望能夠幫助大家答疑解惑,請多多支持創(chuàng)新互聯(lián)網(wǎng)站!

分享文章:Go中內(nèi)存釋放的改進(jìn)是怎樣的
瀏覽地址:http://muchs.cn/article6/gdidig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、域名注冊品牌網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、Google靜態(tài)網(wǎng)站

廣告

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

成都定制網(wǎng)站建設(shè)