自动生成程序的heap文件

写了一个可以自动生成heap文件的脚本,heap文件名由程序占用的内存和当前时间命名。

bash 复制代码
#!/bin/bash

# 用法示例: ./getheap.sh
# 文件名格式: xx_{PSS_MB}M_{HHMMSS}.heap

set -euo pipefail

PROCESS_NDMLOCMAP="process"
HEAP_DIR="./heap"

mkdir -p "${HEAP_DIR}"

# 获取进程PID
pid=$(pgrep -f "${PROCESS_NDMLOCMAP}" | head -n1)
if [[ -z "${pid}" ]]; then
    echo "未找到运行中的 ${PROCESS_NDMLOCMAP} 进程"
    exit 1
fi

# 获取内存占用(PSS,单位MB)
# 读取/proc/$pid/smaps,统计所有Pss: 行的和
pss_kb=$(awk '/^Pss:/ {sum += $2} END {print sum}' /proc/"${pid}"/smaps)
if [[ -z "${pss_kb}" ]]; then
    echo "无法获取进程PSS内存"
    exit 1
fi
pss_mb=$(( (pss_kb + 1023) / 1024 ))

# 获取当前时间(时分秒)
datetime=$(date +%H%M%S)

# 组装文件名
heapfile="${HEAP_DIR}/xx_${pss_mb}M_${datetime}.heap"

# 实际抓取 heap 的命令(请根据实际情况修改)
# 例如通过 telnet 到 8880 端口抓取,结果重定向到目标文件
telnet 127.0.0.1 8880 > "${heapfile}"

echo "Heap profile 已保存:${heapfile}"
相关推荐
高峰聚焦15 小时前
深入理解 SELinux:通过 Nginx 和 SSH 服务配置实践安全上下文与端口策略
nginx·安全·ssh
皓月盈江18 小时前
阿里云服务器SSH远程登陆输错密码次数过多导致本地IP禁止登陆,网站和Linux宝塔面板无法访问,但是网站在其他网络访问一切正常
服务器·阿里云·ssh·linux宝塔面板·输错密码次数过多·服务器禁止ip登陆·其他网络访问正常
今年不养猪只除草20 小时前
VSCode远程开发-本地SSH隧道保存即时修改
ide·vscode·ssh
刘欣的博客1 天前
C# Renci.SshNet 登陆 suse配置一粒
linux·ssh
路漫漫其远,吾求索2 天前
并发解析hea,转为pdf格式
pdf·ssh
@comefly2 天前
本地github ssh多账号问题
运维·ssh·github
想躺在地上晒成地瓜干2 天前
树莓派超全系列教程文档--(50)如何查找树莓派的IP地址
ssh·ip·树莓派·树莓派教程
ZPC82103 天前
ssh 测试 是否可以连通docker 容器
运维·docker·ssh
大海里的番茄3 天前
Wave Terminal + Cpolar:SSH远程访问的跨平台实战+内网穿透配置全解析
运维·ssh