1 回答

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 測試。
- 1 回答
- 0 關(guān)注
- 167 瀏覽
添加回答
舉報