
这是我在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测试。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)