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

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

top命令的内存相关字段

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

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

htop的优势

相比tophtop提供更直观的界面:

  • 彩色区分不同类型的内存(如绿色表示进程占用,蓝色表示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:这是因为freeused字段包含了bufferscached,而top/htop中的RES(或htopMEM)仅统计进程实际占用的物理内存(不包括可回收的bufferscached),实际可用内存应参考freeavailable字段(=空闲内存+可回收的cached+SReclaimablebuffers),它更准确地反映了系统当前可用的内存量。

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

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

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

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

相关推荐

  • 如何在官网下载jdk linux版本号

    Oracle官网,导航至JDK下载页面,选择Linux系统对应版本,接受协议后即可

    2025年8月17日
    4100
  • Linux下如何查看MySQL是否已安装?

    在Linux系统中,MySQL作为一种广泛使用的关系型数据库管理系统,其安装状态的确认是日常运维和开发中的基础操作,本文将详细介绍多种方法来检查MySQL是否已安装,涵盖命令行工具、系统服务、文件路径、进程状态及包管理器查询等维度,帮助用户全面掌握MySQL安装状态的判断技巧,使用命令行工具直接检查版本最直接的……

    2025年8月24日
    3300
  • 如何正确退出Linux系统?

    在Linux系统中,退出操作根据使用场景和权限的不同,可分为用户会话退出(注销当前用户)和系统关机/重启(完全关闭或重启系统),无论是图形界面还是命令行环境,掌握正确的退出方式不仅能保护数据安全,还能避免系统异常,以下从多个场景详细说明Linux系统的退出方法,用户会话退出:注销当前用户用户会话退出指结束当前登……

    2025年9月16日
    2400
  • Linux vim如何保存退出?操作步骤是怎样的?

    在Linux系统中,vim(Vi IMproved)是一款功能强大的文本编辑器,广泛应用于服务器管理、代码编写等场景,掌握vim的保存退出操作是使用vim的基础,但不同场景下(如正常保存、强制退出、多文件处理等)对应的命令有所不同,本文将详细讲解vim保存退出的各类操作方法、适用场景及注意事项,帮助用户高效完成……

    2025年9月24日
    2500
  • Linux下如何解压.tar.bz2文件?

    在Linux系统中,.tar.bz2文件是一种常见的压缩格式,它结合了tar工具的打包功能和bzip2工具的压缩功能,通常用于将多个文件或目录打包并压缩,以减少存储空间占用或便于传输,解压.tar.bz2文件需要使用tar命令,并通过特定选项处理bzip2压缩层,本文将详细介绍Linux下解压.tar.bz2文……

    2025年8月28日
    3400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信