Ejemplo n.º 1
0
func ProcessMemory(proc *process.Process) (ms *MemoryStat, err error) {
	return StupidGetMemory(proc)

	// Not working in some machines
	if !isRootUser() {
		return StupidGetMemory(proc)
	}

	mapsStat, err := proc.MemoryMaps(true) // need root here
	if err != nil {
		return nil, err
	}
	ms = &MemoryStat{}
	for _, mstat := range *mapsStat {
		ms.VSS += (mstat.Size << 10)
		ms.RSS += (mstat.Rss << 10)
		ms.PSS += (mstat.Pss << 10)
		if mstat.Rss == mstat.Pss {
			ms.USS += (mstat.Rss << 10)
		} else {
			ms.USS += ((mstat.PrivateClean + mstat.PrivateDirty) << 10)
		}
	}
	return
}