美文网首页
查看进程内存占用

查看进程内存占用

作者: 灰斗儿 | 来源:发表于2025-04-24 10:24 被阅读0次

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

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

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

命令格式:

bash

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

  • 参数说明
    • -p <PID>:指定进程 ID。
    • -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

  • %MEM:进程占用系统总内存的百分比(如 0.8%)。
  • RSS:常驻内存大小(单位为 KB,如 45678 KB ≈ 44.6 MB)。

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

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

命令格式:

bash

top -p <PID>

  • 操作说明
    • 执行命令后,界面会实时刷新,显示该 PID 的详细信息。
    • 关键列:
      • RES:物理内存占用(单位为 KB,与 ps 中的 RSS 一致)。
      • %MEM:内存占用百分比。
      • SHR:共享内存(如共享库占用的内存)。

示例:

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

  • 每一行代表一个内存段(如可执行代码、数据段、共享库等)。
  • total kB:进程占用的总内存(与 ps 中的 RSS 接近)。

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

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

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

bash

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

  • 输出示例

    plaintext

    VmRSS:     45678 kB   # 常驻内存(物理内存)
    VmSize:   456789 kB   # 虚拟内存总量
    
    

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 个内存占用函数
    
    

关键概念区分

  • RSS(常驻内存):进程实际占用的物理内存(已分配且正在使用)。
  • VSS(虚拟内存):进程申请的虚拟内存总量(包含未实际分配的部分,通常大于 RSS)。
  • Go 应用的内存特点:Go 的垃圾回收(GC)会自动管理堆内存,因此需关注 堆内存增长趋势(通过 pprof分析),而非单纯看 RSS。

总结:按场景选择工具

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

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

相关文章

  • linux pmap命令

    查看进程123占用内存情况 查看进程123占用内存情况--详细 查看进程123占用内存情况--更详细

  • 301-服务器运维命令

    查看进程,按内存从大到小 查看进程,按CPU利用率从大到小排序 查看php进程占用的内存 查看剩余内存 查看磁盘占...

  • Centos 查看系统状态

    查看监听的端口 检查端口被哪个进程占用 查看进程的详细信息 查看所有进程 查看内存情况 查看系统日志

  • 开发中需要掌握的几个Linux命令

    部署服务常用命令 启动springboot服务 强制终止进程 查找进程 top 查看内存占用 free 查看内存使...

  • JVM 内存分析

    导出内存dump 查看某个进程的内存状态:jmap -heap ; 查看某个进程当前对象的占用情况,并输出到文件...

  • android程序调试

    1、查看cpu占用和内存占用 adb shell top -m 5 查看cpu占用最多的5个进程 top 显示参数...

  • 内存溢出排查命令

    可以先用top命令查询出占用内存最多的进程,然后使用下面指令分析占用内存较大的代码 查看进程的内存镜像信息 显示j...

  • php-fpm占用内存过高分析

    1、查看php-fpm的进程个数 2、查看每个php-fpm占用的内存大小 3、查看单个php-fpm进程消耗内存...

  • 性能监控命令 | MEMORY

    CPUMEMORYIONETWORKLINUX进程内存占用查看方法 MEMORY 首先说说虚拟内存和物理内存: 虚...

  • 实用命令

    #查看内存占用前10的进程psaux |sort-k4,4nr |head-n10#查看CPU占用前10 的进程p...

网友评论

      本文标题:查看进程内存占用

      本文链接:https://www.haomeiwen.com/subject/lpagbjtx.html