Linux下如何精准查看运行程序的内存占用?从基础到进阶全攻略

admin
Linux下精准查看程序内存占用需掌握基础与进阶技巧,基础工具如tophtopps可快速概览资源,进阶则利用/proc文件系统及pmap命令,深入分析RSS、VIRT等详细数据,帮助用户精准定位内存瓶颈,优化系统性能。

在Linux系统管理和开发过程中,内存的使用情况是判断系统性能和排查程序Bug(如内存泄漏)的关键指标,很多用户可能习惯了使用 topfree 来查看系统总体的内存使用率,但当需要精准定位某个特定运行程序的内存消耗时,往往不知道该用哪个命令。

本文将带你从基础到进阶,详细介绍在Linux中查看运行程序内存使用情况的几种实用方法。

快速定位:使用 ps 命令查看进程基本信息

ps (Process Status) 命令是Linux中最基础的进程查看工具之一,它主要用于显示当前正在运行的进程状态。

Linux下如何精准查看运行程序的内存占用?从基础到进阶全攻略

基本用法: 如果你知道程序的名称(nginxpython),可以使用 grep 进行过滤:

ps aux | grep nginx

解读输出:

  • RSS (Resident Set Size): 代表该进程占用的物理内存(实际占用),这是最常关注的指标。
  • VSZ (Virtual Memory Size): 代表该进程占用的虚拟内存,包含共享库占用的内存。

精简输出: 为了只看内存相关的列,可以使用 -o 参数:

ps -o pid,ppid,user,%mem,rss,vsz,cmd -p $(pgrep nginx)

(注:pgrep nginx 会先找到nginx的PID,再传递给ps命令)

实时监控:使用 tophtop 动态查看

top 命令提供了实时的动态视图,而 htop 则是其更友好的增强版(需要安装 htop)。

使用 top 进入 top 后,按 P 键可以按照 CPU 使用率排序,按 M 键可以按照 内存 使用率排序。

定位特定程序:top 界面,直接输入进程名称(如 nginx),系统会自动过滤出该进程的信息,此时你可以清晰地看到该进程的 RES(物理内存)和 VIRT(虚拟内存)占用。

使用 htop htop 提供了彩色显示和更直观的交互界面,支持鼠标操作,同样,在 htop 界面按 键输入进程名即可过滤。

深入分析:使用 pmap 查看进程内存映射

如果你需要查看某个程序具体占用了哪些内存区域(例如代码段、堆、栈、共享库),pmap 是最强大的工具。

基本用法: 假设你想查看 PID 为 1234 的程序的内存详情:

pmap -x 1234

输出解读:

  • Kbytes: 占用的总内存大小(KB)。
  • RSS: 占用的物理内存大小(KB)。
  • Dirty: 占用的脏内存(即被修改但尚未写回磁盘的内存)大小。

高级用法: 查看进程的共享内存段:

pmap -x 1234 | grep -i shared

深入内核:查看 /proc/[pid]/status

Linux 内核将进程信息保存在 /proc 文件系统中,通过读取特定 PID 的 status 文件,可以获取非常详细的内存统计信息。

命令:

cat /proc/[PID]/status

关键字段解读:

  • VmRSS: 常驻集大小,即物理内存占用。
  • VmSize: 虚拟内存大小。
  • VmPeak: 峰值虚拟内存大小。
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码