中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go中內存釋放的改進是怎樣的

發布時間:2022-01-17 16:07:36 來源:億速云 閱讀:237 作者:kk 欄目:大數據

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

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

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

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

Go中內存釋放的改進是怎樣的

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

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

Go中內存釋放的改進是怎樣的

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

go適合做什么

go是golang的簡稱,而golang可以做服務器端開發,且golang很適合做日志處理、數據打包、虛擬機處理、數據庫代理等工作。在網絡編程方面,它還廣泛應用于web應用、API應用等領域。

關于“Go中內存釋放的改進是怎樣的”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

go
AI

韶关市| 雅江县| 贵溪市| 金川县| 大丰市| 枣阳市| 平阴县| 黄平县| 格尔木市| 合阳县| 临武县| 黑山县| 镇康县| 鄂伦春自治旗| 南木林县| 沽源县| 康平县| 绥芬河市| 珠海市| 邛崃市| 万山特区| 邵阳市| 和平县| 肇庆市| 绥中县| 武穴市| 永川市| 天柱县| 郑州市| 罗城| 奉贤区| 三都| 柳林县| 滨州市| 阜平县| 江口县| 黔东| 原阳县| 收藏| 通江县| 宝应县|