最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go pprof內(nèi)存指標(biāo)含義備忘錄及案例分析

 更新時(shí)間:2020年03月10日 09:38:05   作者:yoko blog  
這篇文章主要介紹了Go pprof內(nèi)存指標(biāo)含義備忘錄問題,小編特此把問題及案例分享到腳本之家平臺供大家學(xué)習(xí),需要的朋友可以參考下

最近組內(nèi)一些Go服務(wù)碰到內(nèi)存相關(guān)的問題,所以今天抽時(shí)間看了下Go pprof內(nèi)存指標(biāo)的含義,為后續(xù)查問題做準(zhǔn)備。

內(nèi)容主要來自于Go代碼中對這些字段的注釋,加自己的理解。理解不對的地方歡迎指正。

// https://github.com/golang/go/blob/master/src/runtime/mstats.go#L150

// 總共從OS申請的字節(jié)數(shù)
// 是下面各種XxxSys指標(biāo)的總和。包含運(yùn)行時(shí)的heap、stack和其他內(nèi)部數(shù)據(jù)結(jié)構(gòu)的總和。
// 它是虛擬內(nèi)存空間。不一定全部映射成了物理內(nèi)存。
Sys

// 見`Sys`
HeapSys

// 還在使用的對象,以及不使用還沒被GC釋放的對象的字節(jié)數(shù)
// 平時(shí)應(yīng)該平緩,gc時(shí)可能出現(xiàn)鋸齒
HeapAlloc

// 正在使用的對象字節(jié)數(shù)。
// 有個(gè)細(xì)節(jié)是,如果一個(gè)span中可包含多個(gè)object,只要一個(gè)object在使用,那么算的是整個(gè)span。
// `HeapInuse` - `HeapAlloc`是GC中保留,可以快速被使用的內(nèi)存。
HeapInuse

// 已歸還給OS的內(nèi)存。沒被堆再次申請的內(nèi)存。
HeapReleased

// 沒被使用的span的字節(jié)數(shù)。
// 這部分內(nèi)存可以被歸還給OS,并且還包含了`HeapReleased`。
// 可以被再次申請,甚至作為棧內(nèi)存使用。
// `HeapIdle` - `HeapReleased`即GC保留的。
HeapIdle

/// ---

// 和`HeapAlloc`一樣
Alloc

// 累計(jì)的`Alloc`
// 累計(jì)的意思是隨程序啟動后一直累加增長,永遠(yuǎn)不會下降。
TotalAlloc

// 沒什么卵用
Lookups = 0

// 累計(jì)分配的堆對象數(shù)
Mallocs

// 累計(jì)釋放的堆對象數(shù)
Frees

// 存活的對象數(shù)。見`HeapAlloc`
// HeapObjects = `Mallocs` - `Frees`
HeapObjects

// ---
// 下面的XxxInuse中的Inuse的含義,和XxxSys中的Sys的含義,基本和`HeapInuse`和`HeapSys`是一樣的
// 沒有XxxIdle,是因?yàn)槎及赻HeapIdle`里了

// StackSys基本就等于StackInuse,再加上系統(tǒng)線程級別的棧內(nèi)存
Stack = StackInuse / StackSys

// 為MSpan結(jié)構(gòu)體使用的內(nèi)存
MSpan = MSpanInuse / MSpanSys

// 為MCache結(jié)構(gòu)體使用的內(nèi)存
MCache = MCacheInuse / MCacheSys

// 下面幾個(gè)都是底層內(nèi)部數(shù)據(jù)結(jié)構(gòu)用到的XxxSys的內(nèi)存統(tǒng)計(jì)
BuckHashSys
GCSys
OtherSys

// ---
// 下面是跟GC相關(guān)的

// 下次GC的觸發(fā)閾值,當(dāng)HeapAlloc達(dá)到這個(gè)值就要GC了
NextGC

// 最近一次GC的unix時(shí)間戳
LastGC

// 每個(gè)周期中GC的開始unix時(shí)間戳和結(jié)束unix時(shí)間戳
// 一個(gè)周期可能有0次GC,也可能有多次GC,如果是多次,只記錄最后一個(gè)
PauseNs
PauseEnd

// GC次數(shù)
NumGC

// 應(yīng)用程序強(qiáng)制GC的次數(shù)
NumForcedGC

// GC總共占用的CPU資源。在0~1之間
GCCPUFraction

// 沒被使用,忽略就好
DebugGC

查看方式

// 方式一
import "runtime"

var m runtime.MemStats
runtime.ReadMemStats(&m)
// 方式二
import _ "net/http/pprof"
import "net/http"
http.ListenAndServe("0.0.0.0:10001", nil)
// http://127.0.0.1:10001/debug/pprof/heap?debug=1

下面隨便找個(gè)服務(wù)來練手。

Top查看程序的 VIRT 約為2.4G, RES 約為1.7G。

使用web pprof觀察到的指標(biāo),可以對應(yīng)著前文說的含義看看。

# Sys = 1842916040 ~1.7G
# HeapSys = 1711013888 ~1.6G
# HeapInuse = 1237483520 ~1.18G
# HeapAlloc = 1195472528 ~1.14G
HeapInuse - HeapAlloc = 40M
# HeapIdle = 473530368 ~451M
# HeapReleased = 61063168 ~58.2M
HeapIdle - HeapReleased = 393M

# Alloc = 1195472528 ~1.14G
# TotalAlloc = 426616278424 ~397.3G

# Lookups = 0
# Mallocs = 2907819388 ~29億對象數(shù)
# Frees = 2901808898 ~29億對象數(shù)
# HeapObjects = 6010490 ~601萬對象數(shù)

# Stack = 33390592 / 33390592 ~31.8M / 31.8M
# MSpan = 13542744 / 19906560 ~12.9M / 18.9M
# MCache = 55552 / 65536
# BuckHashSys = 2371870
# GCSys = 69398992
# OtherSys = 6768602

總結(jié)

到此這篇關(guān)于Go pprof內(nèi)存指標(biāo)含義備忘錄及案例分析的文章就介紹到這了,更多相關(guān)Go pprof內(nèi)存指標(biāo)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言中的字符串拼接方法詳情

    Go語言中的字符串拼接方法詳情

    本文介紹Go語言中的string類型、strings包和bytes.Buffer類型,介紹幾種字符串拼接方法的相關(guān)資料,需要的朋友可以參考一下,希望對你有所幫助
    2021-10-10
  • 通過手機(jī)案例理解Go設(shè)計(jì)模式之裝飾器模式的功能屬性

    通過手機(jī)案例理解Go設(shè)計(jì)模式之裝飾器模式的功能屬性

    這篇文章主要為大家介紹了Go設(shè)計(jì)模式之裝飾器模式的功能屬性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • golang使用正則表達(dá)式解析網(wǎng)頁

    golang使用正則表達(dá)式解析網(wǎng)頁

    這篇文章主要介紹了golang使用正則表達(dá)式解析網(wǎng)頁,需要的朋友可以參考下
    2015-03-03
  • Go條件控制語句詳解(if-else、switch和select)

    Go條件控制語句詳解(if-else、switch和select)

    條件語句用于檢查一個(gè)條件是否為真,并根據(jù)條件的真假來決定是否執(zhí)行相應(yīng)的代碼,下面這篇文章主要給大家介紹了關(guān)于Go條件控制語句(if-else、switch和select)的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • golang中定時(shí)器cpu使用率高的現(xiàn)象詳析

    golang中定時(shí)器cpu使用率高的現(xiàn)象詳析

    這篇文章主要給大家介紹了關(guān)于golang中定時(shí)器cpu使用率高的現(xiàn)象的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • glow工具在命令行讀取Markdown好物分享

    glow工具在命令行讀取Markdown好物分享

    這篇文章主要為大家介紹了一款實(shí)用的命令行工具glow,這個(gè)CLI工具可以在命令行讀取Markdown,這對于碼農(nóng)來說非常友好,使用起來也非常舒爽
    2022-07-07
  • Go Slice擴(kuò)容的這些坑你踩過哪些

    Go Slice擴(kuò)容的這些坑你踩過哪些

    這篇文章主要為大家詳細(xì)介紹了Golang中對切片Slice的append操作時(shí)會遇到的踩坑經(jīng)驗(yàn)分享,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • Go函數(shù)全景從基礎(chǔ)到高階深度剖析

    Go函數(shù)全景從基礎(chǔ)到高階深度剖析

    本文深入探索Go語言中的函數(shù)特性,從基礎(chǔ)函數(shù)定義到特殊函數(shù)類型,再到高階函數(shù)的使用和函數(shù)調(diào)用優(yōu)化,通過詳細(xì)的代碼示例和專業(yè)解析,讀者不僅可以掌握函數(shù)的核心概念,還能了解如何在實(shí)踐中有效利用這些特性來提高代碼質(zhì)量和性能
    2023-10-10
  • go語言學(xué)習(xí)之包和變量詳解

    go語言學(xué)習(xí)之包和變量詳解

    這篇文章主要給大家愛介紹了關(guān)于go語言學(xué)習(xí)之包和變量的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用go語言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • Go語言中validation庫不能校驗(yàn)零值問題的解決方法

    Go語言中validation庫不能校驗(yàn)零值問題的解決方法

    在使用 Gin 框架的時(shí)候,前后端傳遞數(shù)據(jù)的時(shí)候,比如使用 JSON 格式,通常會使用 ShouldBindJSON 去用結(jié)構(gòu)體打 tag 綁定前端傳來的 JSON 格式數(shù)據(jù),本文給大家介紹了Go語言中validation庫不能校驗(yàn)零值問題的解決方法,需要的朋友可以參考下
    2024-08-08

最新評論

论坛| 大方县| 高阳县| 怀宁县| 彭州市| 新疆| 涟水县| 土默特右旗| 衡东县| 柳州市| 时尚| 高邑县| 洛南县| 瑞金市| 平远县| 尖扎县| 宣威市| 宁强县| 简阳市| 独山县| 墨脱县| 景德镇市| 普安县| 汕尾市| 满城县| 阿图什市| 景谷| 浮梁县| 雷波县| 陵川县| 山东| 梓潼县| 韩城市| 宜川县| 财经| 红原县| 金川县| 含山县| 临江市| 新宁县| 托里县|