亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

普安县| 沂水县| 平湖市| 龙岩市| 神农架林区| 昭平县| 兰考县| 塔城市| 新兴县| 民勤县| 灯塔市| 民权县| 璧山县| 台南市| 凌源市| 高唐县| 万年县| 万宁市| 琼海市| 潍坊市| 沅陵县| 滨州市| 阿拉善盟| 甘南县| 瓦房店市| 沙田区| 溆浦县| 广昌县| 太谷县| 贵州省| 石首市| 大埔区| 高安市| 安康市| 扬中市| 旬邑县| 五台县| 郑州市| 罗甸县| 荣昌县| 渭南市|