Linux下如何查看内存的使用情况?

在Linux系统中,内存管理是系统性能优化的核心环节,准确查看内存使用情况有助于诊断性能瓶颈、合理分配资源,Linux内存主要分为物理内存(RAM)和虚拟内存(Swap),其中物理内存是系统直接使用的内存,Swap则是硬盘上作为内存扩展的空间,本文将详细介绍Linux下查看内存使用的多种命令及其使用场景,帮助用户全面掌握内存监控方法。

linux下如何查看使用内存

基础内存查看命令:free

free命令是最直观查看内存使用情况的工具,通过它可以快速了解物理内存和Swap的总量、已用、空闲等信息,其基本语法为free [选项],常用选项包括-b(字节)、-k(KB)、-m(MB)、-g(GB)、-h(人类可读格式)等。

示例输出与解析

执行free -h(推荐使用人类可读格式)后,输出如下:

              total        used        free      shared  buff/cache   available
Mem:          7.7Gi       2.1Gi       4.2Gi       256Mi       1.4Gi       5.3Gi
Swap:         2.0Gi          0B       2.0Gi
  • total:内存总量(物理内存或Swap总大小)。
  • used:已使用内存(注意:这里的“used”包含buffers和cached,并非完全被进程占用的内存)。
  • free:完全空闲的内存。
  • shared:被多个进程共享的内存(如tmpfs文件系统)。
  • buff/cache: buffers(内核缓冲区)和cached(页面缓存)的总和,这部分内存可被回收,因此实际可用内存需参考available。
  • available:真正可用的内存(包括空闲内存和可回收的buff/cache),比free更准确,是判断内存是否充足的重要指标。

不同选项对比

选项 输出单位 适用场景
free -b 字节 精确计算,适合脚本处理
free -m MB 中等规模内存查看,默认单位
free -h 人类可读(KB/MB/GB) 日常查看,直观易懂
free -s 2 -c 5 每隔2秒刷新,共5次 动态监控内存变化趋势

实时进程内存监控:top与htop

top和htop是动态监控系统资源(包括内存)的常用工具,可实时查看各进程的内存占用情况,htop是top的增强版(默认未安装,需通过sudo apt install htop或sudo yum install htop安装),界面更友好,支持鼠标操作。

top命令的内存相关字段

执行top后,按M键可按内存使用率排序,输出中与内存相关的字段包括:

  • VIRT:虚拟内存大小(进程使用的虚拟内存总量,包括实际物理内存、Swap和共享内存)。
  • RES:常驻内存集(进程当前占用的物理内存,不包括Swap和可回收的cached)。
  • SHR:共享内存(进程与其他进程共享的内存大小)。
  • %MEM:内存使用率(RES/物理内存总量×100%)。

htop的优势

相比top,htop提供更直观的界面:

  • 彩色区分不同类型的内存(如绿色表示进程占用,蓝色表示cached)。
  • 支持垂直拆分窗口,同时查看多个进程的内存信息。
  • 按F6可选择排序字段(如按%MEM、RES排序),按F9可直接杀死进程。
  • 显示SReclaimable(可回收的Slab缓存),更准确地反映可用内存。

示例:htop内存界面

在htop界面中,上方显示整体内存使用情况(与free -h类似),下方为进程列表,其中%MEM列可直接查看各进程内存占比,便于定位内存占用大户。

linux下如何查看使用内存

内核内存信息查看:/proc/meminfo

/proc/meminfo是Linux内核提供的内存信息虚拟文件,内容比free更详细,适合深入分析内存状态,可通过cat /proc/meminfo查看,关键字段包括:

  • MemTotal:物理内存总量。
  • MemFree:完全空闲的物理内存。
  • Buffers:内核缓冲区(用于块设备I/O)。
  • Cached:页面缓存(用于文件缓存)。
  • SwapTotal:Swap总大小。
  • SwapFree:空闲Swap大小。
  • Slab:内核数据结构缓存(不可回收部分)。
  • SReclaimable:可回收的Slab缓存(属于cached的一部分)。

示例输出片段

MemTotal:        8045792 kB
MemFree:         4325376 kB
Buffers:          123456 kB
Cached:          1567890 kB
SwapTotal:       2097152 kB
SwapFree:        2097152 kB
Slab:            234567 kB
SReclaimable:     98765 kB

通过/proc/meminfo可计算可用内存:MemFree + Cached + SReclaimable - Buffers(注意不同Linux版本计算方式略有差异)。

内存统计与趋势分析:vmstat

vmstat(Virtual Memory Statistics)可报告进程、内存、I/O、CPU等系统的整体统计信息,适合分析内存使用趋势,语法为vmstat [选项] [刷新间隔] [次数]。

示例:vmstat 2 3

每2秒刷新一次,共3次,输出如下:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 4325376 123456 1567890    0    0     10    20   100  150  5  2 92 1 0
 2  0      0 4310000 123456 1570000    0    0      5    15   120  160  6  3 90 1 0

与内存相关的列:

  • swpd:已使用的Swap大小(KB),若持续大于0,说明物理内存不足。
  • free:空闲内存(KB)。
  • buff:缓冲区大小(KB)。
  • cache:缓存大小(KB)。
  • si/so:每秒从Swap读入/写入的内存量(KB),若si、so持续较高,说明系统频繁使用Swap,性能可能下降。

进程内存详情分析:ps

ps命令可查看特定进程的内存使用情况,常用选项-eo自定义输出格式,或--sort排序。

linux下如何查看使用内存

示例:查看前10个内存占用最高的进程

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 11

输出:

  PID  PPID CMD                         %MEM %CPU
1234     1 /usr/lib/firefox/firefox    15.2  8.5
5678     1 /usr/bin/code               12.1  5.2
...
  • %MEM:进程内存占用率(与top中的%MEM一致)。
  • RSS(可通过ps -eo pid,rss,cmd查看):常驻内存集(物理内存占用,KB)。

高级内存分析工具:smem

smem是一款更精确的内存分析工具,可计算进程的PSS(Proportional Set Size,按比例分摊的共享内存)和USS(Unique Set Size,进程独占的物理内存),避免重复计算共享内存,适合分析内存泄漏,需安装:sudo apt install smem。

示例:查看进程内存占比(按USS排序)

smem -t -p | sort -k 4 -nr | head -n 10

输出:

  Pid  USS  PSS  Swap      Command
1234 120MB 150MB   0MB  /usr/lib/firefox/firefox
5678  80MB 100MB   0MB  /usr/bin/code
  • USS:进程独占内存,完全释放该进程可回收的内存量,比RSS更准确。
  • PSS:按比例分摊共享内存,若多个进程共享同一内存块,PSS为共享内存除以共享进程数。

不同场景下的工具选择

场景 推荐工具 原因
快速查看整体内存使用 free -h 直观显示总量、已用、可用
实时监控进程内存 htop(或top) 动态刷新,支持排序和交互操作
分析内存使用趋势 vmstat 统计历史数据,判断是否频繁使用Swap
深入查看内核内存 /proc/meminfo 提供最详细的内核内存参数
定位内存泄漏 smem 计算USS/PSS,准确分析进程内存占用
脚本自动化处理 free -b/vmstat 输出格式固定,便于解析

相关问答FAQs

Q1:为什么free命令显示的“已用内存”与top/htop中各进程内存占用总和不一致?
A:这是因为free的used字段包含了buffers和cached,而top/htop中的RES(或htop的MEM)仅统计进程实际占用的物理内存(不包括可回收的buffers和cached),实际可用内存应参考free的available字段(=空闲内存+可回收的cached+SReclaimable–buffers),它更准确地反映了系统当前可用的内存量。

Q2:如何判断Linux系统内存是否不足?
A:可通过以下指标综合判断:

  1. Swap使用率:若SwapFree持续为0或si/so(vmstat中的Swap读写)频繁大于0,说明物理内存不足,系统频繁使用Swap,性能会显著下降。
  2. available内存:若free -h中的available持续低于总内存的10%(例如8GB内存中可用内存低于800MB),且系统响应变慢,说明内存紧张。
  3. 进程内存占用:通过htop或ps发现某个进程内存占用异常高(如超过50%总内存),且持续增长,可能存在内存泄漏。
  4. 系统延迟:使用iostat或dstat发现I/O等待时间增加,可能因内存不足导致频繁读写Swap。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/32145.html

赞 (0)
酷番叔酷番叔
上一篇 2025年9月29日 02:25
下一篇 2025年9月29日 02:43

相关推荐

  • Linux如何快速识别未挂载硬盘?

    核心工具:lsblk(推荐首选)作用:列出所有块设备(硬盘、分区),清晰展示挂载状态,命令:lsblk -f输出解读:设备名:如 sda(第一块硬盘)、sdb(第二块硬盘),分区:如 sdb1、sdb2,未挂载标志:若 MOUNTPOINT 列为空,则该分区未挂载, (图示:sdb1已挂载,sdb2未挂载)进阶……

    2025年6月19日
    46100
  • Linux系统安装NVIDIA显卡驱动失败?常见问题原因及解决方法详解

    在Linux系统中安装NVIDIA显卡驱动时,用户可能会遇到安装失败的问题,这通常由系统环境不匹配、依赖缺失、权限不足或硬件冲突等多种因素导致,以下是针对常见失败原因的详细排查与解决方法,帮助顺利完成驱动安装,系统版本与驱动不匹配不同Linux发行版(如Ubuntu、CentOS、Fedora等)的内核版本和包……

    2025年9月21日
    42000
  • Linux中如何查找指定文件夹的命令?

    在Linux系统中,查找文件夹是日常管理和运维中的常见需求,掌握多种查找方法能高效定位目标目录,本文将详细介绍Linux中查找文件夹的常用命令及其使用场景,帮助用户根据实际需求选择合适的方式,使用find命令:最强大的文件查找工具find命令是Linux中功能最全面的查找工具,支持按名称、类型、大小、修改时间等……

    2025年10月7日
    26400
  • 不学Linux,你会错过什么?

    系统学习路径(分阶段实践指南)阶段1:基础认知与操作(1-2周)理解Linux本质学习开源理念、内核与发行版区别(如Ubuntu/CentOS/Debian的定位)明确命令行(CLI)与图形界面(GUI)的应用场景环境搭建零风险方案:使用VirtualBox/VMware创建虚拟机(推荐Ubuntu LTS版……

    2025年7月29日
    28600
  • Linux中如何将Nginx安装到指定目录?

    在Linux系统中将Nginx安装到指定目录,需通过源码编译方式实现,因为官方提供的二进制包通常固定安装路径,以下是详细步骤,涵盖环境准备、依赖安装、源码编译及配置验证,确保Nginx准确部署到目标目录,环境准备与依赖安装Nginx编译依赖基础开发工具和库文件,需提前安装,不同Linux发行版的依赖包名称略有差……

    2025年9月23日
    21100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信