You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则与grep过滤Android应用mobile_cep的内存占用值并计算平均值

解决adb meminfo输出重复并提取内存数值的方案

我来帮你搞定这个问题——dumpsys meminfo输出重复行大概率是因为命令输出里存在两处匹配mobile_cep的条目,不过不管具体原因,我们用几个简单的命令行工具就能快速解决,还能直接提取出方便计算平均值的数值。

1. 先去掉重复的输出

你的重复行是连续的,直接用uniq命令就能去重:

adb shell dumpsys meminfo | grep mobile_cep | uniq

执行后就只会保留唯一的一行结果:234,467K: org.carleton.iot.mobile_cep (pid 27060 / activities)

2. 提取纯数字内存值(方便后续计算)

如果要把带逗号和K的字符串转成纯整数,用awk做个简单的字符串替换就行:

adb shell dumpsys meminfo | grep mobile_cep | uniq | awk '{gsub(/,|K/,"",$1); print $1}'

这个命令会输出234467,直接是整数格式,后续计算平均值会非常方便。

3. 多次采样并计算平均值

写个简单的bash脚本,循环指定次数获取内存值,累加后算出平均值:

#!/bin/bash
# 设置要采样的次数
sample_count=10
total_memory=0

for ((i=1; i<=sample_count; i++))
do
    # 获取处理后的纯数字内存值
    current_mem=$(adb shell dumpsys meminfo | grep mobile_cep | uniq | awk '{gsub(/,|K/,"",$1); print $1}')
    # 累加到总和里
    total_memory=$((total_memory + current_mem))
    # 每次采样间隔1秒,可根据需求调整时间
    sleep 1
done

# 计算整数平均值
average=$((total_memory / sample_count))
echo "Average memory usage over ${sample_count} samples: ${average}K"

如果需要更精确的浮点平均值,把最后计算的部分改成下面这样(需要系统安装bc工具):

average=$(echo "scale=2; $total_memory / $sample_count" | bc)
echo "Average memory usage over ${sample_count} samples: ${average}K"

额外小技巧

其实dumpsys meminfo可以直接指定进程包名,减少冗余输出,甚至可能从根源避免重复:

adb shell dumpsys meminfo org.carleton.iot.mobile_cep | awk '/TOTAL/ {print $2}'

这个命令直接提取进程的总内存数值(不同Android版本的输出格式可能略有差异,需要确认TOTAL行的位置),比先grep再处理更高效。

内容的提问来源于stack exchange,提问作者Amarjit Dhillon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:21:22