查看进程内存占用

2025-04-24  本文已影响0人  灰斗儿

在 CentOS 系统中,通过 进程 ID(PID) 查看内存占用的方法有多种,以下是最常用的几种方式,涵盖基础命令、实时监控和进阶分析:

方法一:使用 ps 命令(快速查看静态数据)

ps 命令可以直接通过 PID 获取进程的内存占用信息,包括 物理内存(RSS)内存百分比(% MEM)

命令格式:

bash

ps -p <PID> -o %mem,rss,cmd

示例:

假设 PID 为 12345,执行:

bash

ps -p 12345 -o %mem,rss,cmd

输出结果

plaintext

%MEM   RSS CMD
0.8  45678 /usr/local/go-app/main

方法二:使用 top 命令(实时动态监控)

top 命令可实时显示进程的资源占用,支持按 PID 过滤和动态刷新。

命令格式:

bash

top -p <PID>

示例:

bash

top -p 12345

输出片段

plaintext

top - 14:23:45 up 1 day, 22:15,  2 users,  load average: 0.12, 0.15, 0.14
Tasks:  1 total,  0 running,  1 sleeping,  0 stopped,  0 zombie
%Cpu(s):  0.3 us,  0.1 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  32838120 total,   2345672 free,  28987652 used,   1504796 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2976544 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
12345 root      20   0  456789  45678   2348 S   0.0  0.1   0:04.23 /usr/local/go-app/main

方法三:使用 htop 工具(可视化增强版)

htoptop 的增强版,界面更友好,支持搜索 PID 和彩色显示。

操作步骤:

  1. 安装 htop(若未安装):

    bash

    sudo yum install htop -y
    
    
  2. 通过 PID 查找进程

    bash

    htop
    
    
    • F3(搜索)键,输入 PID 或进程名快速定位。
    • 查看 RES(物理内存)和 %MEM 列。

方法四:使用 pmap 命令(查看内存映射详情)

pmap 可显示进程的内存映射关系,包括各段内存的地址、大小和类型。

命令格式:

bash

pmap <PID>

示例:

bash

pmap 12345

输出片段

plaintext

12345:   /usr/local/go-app/main
000055b4a8c00000      44K r-x-- main
000055b4a8d0b000       4K r---- main
000055b4a8d0c000       4K rw--- main
00007f2a4c000000    1988K r-x-- libc-2.28.so
...
total kB          45678

方法五:通过 /proc 文件系统(底层查看)

Linux 系统将进程信息存储在 /proc/<PID> 目录中,可直接读取内存相关文件。

1. 查看 status 文件(简洁版):

bash

cat /proc/<PID>/status | grep -E "VmRSS|VmSize|%MEM"

2. 查看 smaps 文件(详细版):

bash

cat /proc/<PID>/smaps | grep "Size" -A 5  # 查看各内存段大小

方法六:使用 Go 内置的 pprof(精准分析内存结构)

如果是 Go 应用自身,可以通过 pprof 包获取更细致的内存数据(如堆内存分配、GC 状态等)。

前提条件:

在代码中导入 net/http/pprof 并启动 HTTP 服务(见 前文方法三)。

命令示例:

  1. 查看当前堆内存使用量

    bash

    curl http://localhost:6060/debug/pprof/heap | grep "in use"
    
    

    输出类似:

    plaintext

    inuse_space: total: 12345678 bytes
    
    
  2. 分析内存分配热点

    bash

    go tool pprof -inuse_space http://localhost:6060/debug/pprof/heap
    (pprof) top 10  # 显示前 10 个内存占用函数
    
    

关键概念区分

总结:按场景选择工具

场景 推荐工具 优势
快速查看当前占用 ps / pmap 命令简单,直接输出结果
实时动态监控 top / htop 可视化界面,支持实时刷新
深度性能分析 pprof 精准到函数级别的内存分布
系统级底层查看 /proc 文件系统 访问内核级进程信息

根据需求选择合适的工具,若需长期监控或告警,可结合 Prometheus + Grafana 等工具构建监控体系。

上一篇 下一篇

猜你喜欢

热点阅读