/proc/meminfo内的PSS是什么
时间: 2023-11-11 19:07:08 浏览: 167
PSS是一种内存占用指标,它代表“Proportional Set Size”,即按比例分配的集合大小。在Linux操作系统中,每个进程都有一个PSS值,它表示该进程当前使用的物理内存大小,按照进程所占用的共享内存大小进行分配。PSS指标是一种更精确的内存占用指标,它可以准确地反映出每个进程实际使用的物理内存大小,包括共享内存和非共享内存,并且避免了共享内存被重复计算的问题。因此,PSS是一个更准确和可靠的内存占用指标,可以帮助系统管理员更好地了解系统中各个进程的内存占用情况,从而更好地进行系统优化和资源管理。
相关问题
def get_mem(pkg): """获取内存信息""" procs = get_allproc(pkg) pss = [] # rss=[] result = {} if 'Windows' in platform.system(): cmd = "adb shell dumpsys meminfo %s |findstr TOTAL" else: cmd = "adb shell dumpsys meminfo %s |grep TOTAL" for proc in procs: pss1 = excecmd(cmd % proc)[1] # rss1 = excecmd(cmd % pkg)[5] pss.append(int(pss1)) # rss.append(int(rss1)) pss = max_avg(pss)[2] # rss = max_avg(rss)[0] result["pss"] = pss # result["rss"] = rss return result
这段代码是一个 Python 函数,用于获取指定应用程序(pkg)在 Android 设备上的内存信息。具体来说,它会调用 `get_allproc` 函数获取设备上所有进程的信息,然后对于每个进程,使用 `excecmd` 函数执行 `adb shell dumpsys meminfo` 命令(根据操作系统不同,命令中的 `findstr` 或 `grep` 也会有所不同),并从命令输出中提取出内存信息。将所有进程的内存信息求平均值后,返回其中的最大值作为该应用程序的内存占用(pss)。这个函数的实现中还涉及了一些其他函数和变量,但是没有提供给我们看到它们的定义。
TOTAL PSS: 24492 TOTAL RSS: 87324 TOTAL SWAP PSS: 4063 中我只想要TOTAL PSS
你可以在 `excecmd` 函数中修改命令字符串,只保留 `TOTAL PSS` 部分的输出,可以这样修改:
```python
if 'Windows' in platform.system():
cmd = "adb shell dumpsys meminfo %s |findstr \"TOTAL PSS:\""
else:
cmd = "adb shell dumpsys meminfo %s |grep \"TOTAL PSS:\""
```
这样,`excecmd` 函数只会返回 `TOTAL PSS:` 部分的输出,而不包括 `TOTAL RSS:` 和 `TOTAL SWAP PSS:`。然后在 `get_mem` 函数中,将提取出来的 `pss1` 转换为整数即可:
```python
for proc in procs:
pss1 = int(excecmd(cmd % proc)[1].split()[2])
pss.append(pss1)
pss = max_avg(pss)[2]
result["pss"] = pss
```
这样就可以只返回 `TOTAL PSS` 的值了。
阅读全文