您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Golang OS / EXEC,实时内存使用情况

Golang OS / EXEC,实时内存使用情况

这是我在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
}

函数返回给定PID的PSS(比例设置大小),以KB表示。如果您刚刚开始该过程,则应该有权访问相应的/ proc文件

使用内核3.0.13测试。

Go 2022/1/1 18:15:55 有501人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶