Files
mkdocs/docs/Obsidian笔记体系/Resources/工具/脚本库/performance_monitor.sh
renjianbo 8a4717277d 测试
2026-01-12 17:14:58 +08:00

52 lines
1.6 KiB
Bash

#!/bin/bash
# performance_monitor.sh
# 性能监控脚本
PACKAGE_NAME="${1:-com.example.app}"
INTERVAL="${2:-5}"
OUTPUT_FILE="performance_${PACKAGE_NAME}_$(date +%Y%m%d_%H%M%S).csv"
if [ -z "$PACKAGE_NAME" ]; then
echo "Usage: performance_monitor.sh <package_name> [interval_seconds]"
exit 1
fi
echo "Monitoring performance for: $PACKAGE_NAME"
echo "Interval: ${INTERVAL} seconds"
echo "Output file: $OUTPUT_FILE"
echo "Press Ctrl+C to stop"
echo ""
# 创建CSV文件头
echo "Timestamp,PSS(KB),Private_Dirty(KB),Heap_Size(KB),Heap_Alloc(KB)" > "$OUTPUT_FILE"
# 监控循环
while true; do
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
# 获取内存信息
meminfo=$(adb shell dumpsys meminfo "$PACKAGE_NAME" 2>/dev/null)
if [ -n "$meminfo" ]; then
# 提取PSS
pss=$(echo "$meminfo" | grep "TOTAL" | awk '{print $2}')
# 提取Private Dirty
private_dirty=$(echo "$meminfo" | grep "TOTAL" | awk '{print $5}')
# 提取Heap信息
heap_size=$(echo "$meminfo" | grep "App Summary" -A 10 | grep "java heap" | awk '{print $4}')
heap_alloc=$(echo "$meminfo" | grep "App Summary" -A 10 | grep "java heap" | awk '{print $5}')
# 写入CSV
echo "$timestamp,$pss,$private_dirty,$heap_size,$heap_alloc" >> "$OUTPUT_FILE"
# 显示当前状态
printf "\r[%s] PSS: %s KB | Heap: %s KB" "$timestamp" "${pss:-N/A}" "${heap_alloc:-N/A}"
else
echo "Warning: Could not get memory info for $PACKAGE_NAME"
fi
sleep "$INTERVAL"
done