在计算机的世界里,内存就像是一个临时的储物间,计算机运行的各种程序和数据都会在这个“储物间”里进进出出。对于Linux系统来说,了解如何查看内存使用情况是非常重要的,无论是系统管理员管理服务器资源,还是普通用户排查自己设备上的性能问题。本文将详细介绍在Linux系统下查看内存的各种方法。

一、基础知识:内存的概念

在深入探讨如何查看内存之前,我们先来简单了解一下内存是什么。内存(Memory),也被称为随机存取存储器(Random Access Memory,RAM),它就像是一个超级快速的笔记本,计算机的处理器(CPU)在运行程序和处理数据时,会频繁地从内存中读取和写入信息。例如,当你打开一个文本编辑器编写文档时,这个文本编辑器的程序代码以及你正在编辑的文档内容都会暂时存放在内存中,这样CPU就能快速地访问和处理它们。

二、使用free命令查看内存

1. 基本用法

  • 在Linux系统中,`free`命令是查看内存使用情况的最常用工具之一。当你在终端中输入`free`命令时,它会输出系统内存的总体使用情况。例如:
  • total used free shared buff/cache available

    Mem: 8169300 3070204 444 102400 4029652 4508028

    Swap: 2097148 10240 2086908

  • 在这个输出中,“total”表示系统总的物理内存大小,“used”表示已经被使用的内存大小,“free”表示未被使用的内存大小,“shared”表示被共享使用的内存大小(通常在一些特殊的进程间共享内存场景下使用),“buff/cache”表示用于缓冲区(buffer)和缓存(cache)的内存大小。“available”是一个比较新的指标,表示系统中估计还可以被新应用程序使用的内存大小。
  • 2. 以更易读的方式查看

  • 如果你觉得`free`命令默认的输出有点难以阅读,你可以使用`-h`选项,它会以人类可读(human
  • readable)的格式输出内存信息。例如:
  • total used free shared buff/cache available

    Mem: 7.8Gi 2.9Gi 1.0Gi 99.0Mi 3.8Gi 4.3Gi

    Swap: 2.0Gi 10.0Mi 2.0Gi

  • 这样,内存的大小就以更直观的GB、MB等单位显示出来了。
  • 三、使用top命令查看内存

    1. 命令简介

  • `top`命令是一个功能强大的系统性能查看工具,它不仅可以查看内存使用情况,还能查看CPU使用率、进程信息等。当你在终端输入`top`命令后,会看到一个实时更新的系统资源使用情况的界面。
  • 2. 内存相关信息

  • 在`top`命令的输出中,有几列与内存相关。例如“%MEM”列,表示每个进程占用内存的百分比。通过这个指标,你可以快速地找出哪些进程占用了大量的内存资源。在最上方的汇总信息中,也有关于系统内存总量、已使用内存量等信息的显示。例如:
  • top

  • 16:38:00 up 2 days, 3:12, 1 user, load average: 0.00, 0.01, 0.05
  • Tasks: 108 total, 1 running, 107 sleeping, 0 stopped, 0 zombie

    %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

    KiB Mem : 8169300 total, 3070204 used, 444 free, 102400 shared, 4029652 buff/cache

    KiB Swap: 2097148 total, 10240 used, 2086908 free.

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

    1 root 20 0 185644 6196 4048 S 0.0 0.1 0:01.87 systemd

    2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd

  • 这里的“KiB Mem”行显示了系统内存的总体情况,而下面的进程列表中的“%MEM”列则显示了每个进程的内存占用比例。
  • 四、使用vmstat命令查看内存

    1. 命令功能

  • `vmstat`命令主要用于报告虚拟内存(Virtual Memory)的统计信息,包括内存、进程、I/O等方面的信息。虽然它的输出看起来可能比较复杂,但它提供了关于系统内存使用情况的更深入的视角。
  • 2. 内存相关输出

  • 当你输入`vmstat`命令时,例如:
  • procs --memory

  • swap-
  • --io- -system-- cpu--
  • r b swpd free buff cache si so bi bo in cs us sy id wa st

    0 0 10240 444 10 0 0 0 0 101 103 0 0 100 0 0

  • 在“memory”部分,“swpd”表示已经被交换到磁盘交换空间(swap space)的内存大小,“free”表示空闲的内存大小,“buff”表示缓冲区内存大小,“cache”表示缓存内存大小。这些信息有助于你全面了解系统内存的使用状态,特别是在分析内存与磁盘交换(swap)之间的关系时非常有用。
  • 五、使用/proc/meminfo文件查看内存

    1. 文件内容

  • 在Linux系统中,`/proc/meminfo`是一个虚拟文件,它包含了系统内存使用情况的详细信息。你可以使用`cat`命令来查看这个文件的内容,例如`cat /proc/meminfo`,它会输出类似以下的内容:
  • MemTotal: 8169300 kB

    MemFree: 444 kB

    MemAvailable: 4508028 kB

    Buffers: 102400 kB

    Cached: 3927252 kB

    SwapCached: 0 kB

    Active: 2200128 kB

    Inactive: 1701728 kB

    HighTotal: 2097152 kB

    HighFree: 1048576 kB

    LowTotal: 6072148 kB

    LowFree: 20878 kB

    SwapTotal: 2097148 kB

    SwapFree: 2086908 kB

    Dirty: 0 kB

    Writeback: 0 kB

    AnonPages: 951988 kB

    Mapped: 1117488 kB

    Shmem: 102400 kB

    Slab: 512720 kB

    SReclaimable: 341800 kB

    SUnreclaimable: 170920 kB

    KernelStack: 15360 kB

    PageTables: 23072 kB

    NFS_Unstable: 0 kB

    Bounce: 0 kB

    WritebackTmp: 0 kB

    CommitLimit: 6181798 kB

    Committed_AS: 3040488 kB

    VmallocTotal: kB

    VmallocUsed: 40960 kB

    VmallocChunk: kB

    HardwareCorrupted: 0 kB

    AnonHugePages: 524288 kB

    ShmemHugePages: 0 kB

    ShmemPmdMapped: 0 kB

    CachedHugePages: 1048576 kB

    HugePages_Total: 0 kB

    HugePages_Free: 0 kB

    HugePages_Rsvd: 0 kB

    HugePages_Surp: 0 kB

    Hugepagesize: 2048 kB

    DirectMap4k: 262144 kB

    DirectMap2M: 8192000 kB

  • 这里的每个指标都有其特定的含义,例如“MemTotal”表示系统总的内存大小,“MemFree”表示空闲的内存大小,“MemAvailable”表示可用的内存大小等。通过分析这个文件中的数据,你可以深入了解系统内存的各个方面的情况,如缓存、交换空间、内核使用的内存等。
  • 六、结论

    在Linux系统中,有多种方法可以查看内存使用情况,每种方法都有其特点。`free`命令简单直观,适合快速查看内存的总体使用情况;`top`命令不仅可以查看内存,还能同时查看其他系统资源和进程信息;`vmstat`命令提供了更深入的虚拟内存统计信息;而`/proc/meminfo`文件则包含了最为详细的内存相关数据。根据不同的需求,无论是简单的日常检查还是深入的系统性能分析,你都可以选择合适的方法来查看Linux系统中的内存情况。掌握这些查看内存的方法,有助于更好地管理Linux系统的资源,确保系统的稳定和高效运行。

    Linux查看内存的命令和工具