第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang os/exec,實時內(nèi)存使用

Golang os/exec,實時內(nèi)存使用

Go
www說 2021-11-01 10:27:31
我正在使用 Linux、go 和 os/exec 來運行一些命令。我想知道一個進程的實時內(nèi)存使用情況。這意味著我可以在啟動進程后隨時詢問內(nèi)存使用情況,而不僅僅是在運行后。(這就是為什么在回答測量使用golang可執(zhí)行文件運行的內(nèi)存使用量是不是一種選擇對我來說)例如:cmd := exec.Command(...)cmd.Start()//...if cmd.Memory()>50 {     fmt.Println("Oh my god, this process is hungry for memory!")}我不需要非常精確的值,但如果它的錯誤范圍低于 10 兆字節(jié),那就太好了。有沒有辦法做到這一點,或者我需要某種命令行技巧?
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻1850條經(jīng)驗 獲得超11個贊

這是我在 Linux 上使用的:


func calculateMemory(pid int) (uint64, error) {


    f, err := os.Open(fmt.Sprintf("/proc/%d/smaps", pid))

    if err != nil {

        return 0, err

    }

    defer f.Close()


    res := uint64(0)

    pfx := []byte("Pss:")

    r := bufio.NewScanner(f)

    for r.Scan() {

        line := r.Bytes()

        if bytes.HasPrefix(line, pfx) {

            var size uint64

            _, err := fmt.Sscanf(string(line[4:]), "%d", &size)

            if err != nil {

                return 0, err

            }

            res += size

        }

    }

    if err := r.Err(); err != nil {

        return 0, err

    }


    return res, nil

}

此函數(shù)返回給定 PID的PSS(比例集大小),以 KB 表示。如果您剛剛啟動該進程,您應該有權(quán)訪問相應的 /proc 文件。


使用內(nèi)核 3.0.13 測試。


查看完整回答
反對 回復 2021-11-01
  • 1 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號