溫馨提示×

溫馨提示×

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

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

如何發(fā)現(xiàn)golang的內(nèi)存泄露

發(fā)布時間:2020-06-10 18:47:57 來源:億速云 閱讀:385 作者:鴿子 欄目:編程語言

1、給系統(tǒng)壓力,內(nèi)存占用增大,但停止打壓后,內(nèi)存不能降低,則可能有內(nèi)存泄漏。

2、top不能實(shí)時反映程序占用內(nèi)存,因Go向系統(tǒng)申請內(nèi)存不使用后,并不立即歸還系統(tǒng)。

3、程序占用系統(tǒng)內(nèi)存、Go的堆內(nèi)存、實(shí)際使用內(nèi)存:從系統(tǒng)申請的內(nèi)存會在Go的內(nèi)存池管理,整塊的內(nèi)存頁,長時間不被訪問并滿足一定條件后,才歸還給操作系統(tǒng)。又因?yàn)橛蠫C,堆內(nèi)存也不能代表內(nèi)存占用,清理過之后剩下的,才是實(shí)際使用的內(nèi)存。

在Go中發(fā)現(xiàn)內(nèi)存泄露有2種方法,一個是通用的監(jiān)控工具,另一個是go pprof:

監(jiān)控工具:固定周期對進(jìn)程的內(nèi)存占用情況進(jìn)行采樣,數(shù)據(jù)可視化后,根據(jù)內(nèi)存占用走勢(持續(xù)上升),很容易發(fā)現(xiàn)是否發(fā)生內(nèi)存泄露。

go pprof:適合沒有監(jiān)控工具的情況,使用Go提供的pprof工具判斷是否發(fā)生內(nèi)存泄露。

監(jiān)控工具查看進(jìn)程內(nèi)在占用情況

如果使用云平臺部署Go程序,云平臺都提供了內(nèi)存查看的工具,可以查看OS的內(nèi)存占用情況和某個進(jìn)程的內(nèi)存占用情況,比如阿里云,我們在1個云主機(jī)上只部署了1個Go服務(wù),所以O(shè)S的內(nèi)存占用情況,基本是也反映了進(jìn)程內(nèi)存占用情況,OS內(nèi)存占用情況如下,可以看到隨著時間的推進(jìn),內(nèi)存的占用率在不斷的提高,這是內(nèi)存泄露的最明顯現(xiàn)象:

如何發(fā)現(xiàn)golang的內(nèi)存泄露

以上就是golang 內(nèi)存泄露的原因的詳細(xì)內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI