【python】获取实际内存数据pss--total

本文介绍了如何使用Python通过ADB命令获取Android设备的实际内存数据PSS,并提及了可能存在的问题以及对数据的简单处理和分析方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python通过adb命令获取实际内存数据

1.在执行代码前,需要确保能够在doc窗口执行adb命令,开始的数据可能会有问题(目前知识不够,以后再做更改)


#coding=utf-8
import time
import subprocess
import xlwt


package_name_mysdk = 'com.tcl.live'


def getPSS(package_name):
    #用adb获取信息adb shell "dumpsys meminfo com.tcl.live | grep "TOTAL""
    p = subprocess.Popen('adb shell "dumpsys meminfo ' + package_name + ' | grep "TOTAL""',stdout = subprocess.PIPE, stderr = subprocess.PIPE)
    text = p.stdout.read()
    listoftext = text.split()
    print 'PSS=' + listoftext[1]
    return int(listoftext[1])


time_start = 0
time_end = 0


#创建新的工作薄
book = xlwt.Workbook(encoding = 'utf-8', style_compression = 0)
#创建新的sheet,并命名为PSS
sheet_sdk = book.add_sheet('PSS-SDK', cell_overwrite_ok = True)
sheet_sdk.write(0, 0, "time")
sheet_sdk.write(0, 1, "PSS")


#excel表格的
### PSS Memory 的定义与计算 在信息技术领域,PSS(Proportional Set Size)是一种用于衡量进程实际占用物理内存的方法。它通过考虑共享页面的影响来更精确地表示单个进程的真实内存消耗。 #### 定义 PSS 是一种分配方法,其中对于每个被多个进程共享的内存页,其大小会被平均分摊到各个使用该页的进程中[^1]。这意味着如果某个特定内存页由两个进程共享,则这两个进程各自承担一半的内存开销;如果有三个进程共享同一页面,则每进程仅计入三分之一的这部分内存。 #### 计算方式 要计算一个进程的 PSS 值,可以按照如下逻辑执行: - 对于独占使用的内存页,这些页完全归属于对应进程。 - 对于任何共享的内存页,将其大小除以当前正在使用它的总进程数,并将结果加至各相关联进程上[^2]。 具体实现可以通过读取 `/proc/[pid]/smaps` 文件中的数据完成,在 Linux 系统下此文件提供了关于指定 PID 进程详细的内存映射统计信息,其中包括 RSS 和 PSS 数字等字段[^3]。 以下是获取并解析某进程 SMaps 数据的一个 Python 脚本示例: ```python import re def get_pss(pid): pss_total_kb = 0 try: with open(f'/proc/{pid}/smaps', 'r') as smaps_file: lines = smaps_file.readlines() for line in lines: if line.startswith('Pss:'): match = re.search(r'(\d+)\s+kB$', line) if match: pss_value_kb = int(match.group(1)) pss_total_kb += pss_value_kb except Exception as e: print(f"Error reading smaps file: {e}") return pss_total_kb / 1024 # Convert KB to MB if __name__ == "__main__": pid_to_check = 1234 # Replace this with the desired process ID. result_mb = get_pss(pid_to_check) print(f"PSS of Process {pid_to_check} is approximately {result_mb:.2f} MB.") ``` 上述脚本会打开目标进程对应的 `smaps` 文件,查找所有的 "Pss:" 行并将它们所代表的数量累加起来得到最终的结果 (单位转换成MB)[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值