searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

如何在Ubuntu中查看内存使用情况

2026-06-02 17:46:39
0
0

一、为什么要关注内存使用情况?

在Linux系统中,内存是最宝贵的资源之一。与Windows不同,Linux内核会尽可能地利用空闲内存来做缓存(Cache)和缓冲(Buffer),以提升磁盘I/O性能。这就导致一个看似矛盾的现象:你用free命令一看,内存几乎用完了,但系统却运行得非常流畅。

这是因为Linux的内存管理策略本身就是"能用就用"。真正需要关注的不是free那一列的数字,而是available那一列——它才是你的程序真正能动用的内存量。

理解了这一点,你才算真正入门了ubuntu查看内存信息这门功课。


二、五大核心命令,全方位掌握内存状态

2.1 free命令——最经典、最直观

free命令是查看内存使用情况的第一选择,也是使用最广泛的命令。它简单、高效、一目了然。

基础用法

bash
free -h

-h参数表示以人类可读的格式输出(GB、MB等),而不是 raw 的字节数。

输出示例

 
              total        used        free      shared  buff/cache   available
Mem:           7.8G        1.7G        125M         4M        4.0G        3.8G
Swap:          4.0G        1.4G        2.6G

字段解读(重点!)

字段 含义
total 物理内存总量
used 已使用内存(含应用程序 + 缓存)
free 完全空闲的内存(通常很小,这是正常的)
shared 多进程共享内存(一般可忽略)
buff/cache 缓冲+缓存占用的内存(可被快速回收)
available ✅ 真正可用的内存(最关键的指标!)

很多新手看到free只有125M就慌了,其实大可不必。真正该看的是available那一列——3.8G,说明你的系统还有大量内存可供新程序使用。

进阶用法

bash
free -m    # 以MB为单位显示
free -g    # 以GB为单位显示
free -s 5  # 每5秒刷新一次,持续监控

特别要提的是输出中的第二行 -/+ buffers/cache:

-/+ buffers/cache:        956M        6.8G
  • 第一列(956M):去掉缓存后,应用程序实际占用的内存
  • 第二列(6.8G):加上可回收缓存后,真正可用的内存

这个才是判断系统内存是否健康的核心依据。


2.2 top命令——实时动态监控

如果说free是一张快照,那top就是一段视频。它实时刷新,让你看到内存使用的动态变化。

使用方法

bash
top

进入top界面后,你会看到:

 
KiB Mem :  8003600 total,   123456 free,  5678900 used,  2190544 buff/cache
KiB Swap:  4194304 total,  2123456 free,  2070848 used.

实用快捷键

快捷键 功能
Shift + M 按内存使用率排序进程
Shift + P 按CPU使用率排序进程
k 向进程发送信号(如kill)
q 退出top

按下Shift + M后,你可以立刻看到哪个进程吃掉了最多的内存。这在排查内存泄漏、定位问题进程时极其有用。


2.3 htop命令——top的终极进化版

htop是我个人最推荐的内存监控工具,没有之一。它比top更美观、更交互、更强大。

安装

bash
sudo apt update
sudo apt install htop

启动

bash
htop

htop的核心优势

  1. 彩色界面:不同类型的信息用不同颜色标识,一目了然
  2. 鼠标支持:可以用鼠标点击选择进程
  3. 树形显示:按F5可以看到进程的父子关系
  4. 快捷排序:按F6选择按内存(MEM%)排序
  5. 搜索进程:按F3搜索特定进程名
  6. 杀进程:按F9直接终止进程

在htop界面顶部,你可以看到内存条的可视化展示——绿色是已用,蓝色是缓存,黄色是缓冲区。这种直观的图形化展示,比纯数字更容易理解系统状态。


2.4 vmstat命令——虚拟内存统计专家

vmstat(Virtual Memory Statistics)提供的是更底层、更详细的内存统计信息。

基础用法

bash
vmstat

查看详细统计

bash
vmstat -s

这会输出一大段内存相关的详细数据,包括:

  • 空闲内存(free memory)
  • 可用内存(available memory)
  • 交换空间使用情况(swap used/free)
  • 缓冲区和缓存的详细数值

实时监控模式

bash
vmstat 1 10

这表示每1秒刷新一次,共刷新10次。你可以观察si(swap in)和so(swap out)这两个值:

  • 如果siso持续很高,说明系统正在频繁使用交换空间,这是内存不足的红色警报!
  • 如果wa(I/O等待)很高,说明磁盘I/O是瓶颈

2.5 /proc/meminfo——最原始、最完整的内存档案

/proc/meminfo是Linux内核暴露的内存信息文件,包含了系统内存的所有细节。

bash
cat /proc/meminfo

核心字段

 
MemTotal:       8003600 kB    # 总内存
MemFree:         123456 kB    # 完全空闲
MemAvailable:   3800000 kB    # ✅ 真正可用
Buffers:          69112 kB    # 缓冲区
Cached:         302020 kB    # 页面缓存
SwapTotal:      4194304 kB    # 交换分区总量
SwapFree:       2141080 kB    # 交换分区空闲

如果你需要写脚本自动化监控,或者需要最精确的内存数据,/proc/meminfo就是你的数据源。


三、深入进程级内存分析

知道了系统整体的内存状态还不够,你还需要知道哪个进程在吃内存

3.1 ps命令——按内存排序查看进程

bash
ps aux --sort=-%mem | head -n 10

这条命令会按内存使用率从高到低,列出前10个进程。输出包含:

  • PID:进程ID
  • USER:运行用户
  • %MEM:内存占用百分比
  • %CPU:CPU占用百分比
  • VSZ:虚拟内存大小
  • RSS:常驻内存大小(实际占用物理内存)

RSS才是真正反映进程内存占用的指标,VSZ包含了共享库等,会偏大。

3.2 pmap命令——进程内存映射详情

bash
pmap <PID>

这会显示某个进程的完整内存映射,包括每段内存的起始地址、大小、权限、映射文件等。对于分析内存泄漏、优化内存使用非常有帮助。


四、图形化工具——不爱命令行?也有办法

如果你更喜欢图形界面,Ubuntu自带的系统监视器(System Monitor)完全够用。

安装方式

bash
sudo apt install gnome-system-monitor

启动

bash
gnome-system-monitor

它提供了和htop类似的功能,但有更友好的图形界面,包括:

  • 内存使用曲线图
  • CPU使用曲线图
  • 网络流量图
  • 进程列表(可按内存排序)

对于桌面用户来说,这是最省心的选择。


五、内存性能优化实战

掌握了查看方法,接下来聊聊优化。

5.1 释放缓存内存(谨慎操作)

Linux的Cache内存虽然可以自动回收,但有时候你确实需要手动释放:

bash
# 释放页面缓存
echo 1 > /proc/sys/vm/drop_caches

# 释放dentries和inodes
echo 2 > /proc/sys/vm/drop_caches

# 释放全部
echo 3 > /proc/sys/vm/drop_caches

⚠️ 警告:操作前务必执行sync命令,防止数据丢失!

bash
sync && echo 3 > /proc/sys/vm/drop_caches

5.2 调整Swappiness参数

Swappiness控制系统使用交换空间的积极程度,默认值是60。对于内存充足的服务器,建议调低:

bash
# 临时修改
sudo sysctl vm.swappiness=10

# 永久修改(写入配置文件)
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

将swappiness设为10,意味着系统会尽可能使用物理内存,只有在内存极度紧张时才动用Swap。

5.3 调整最大内存映射数

对于运行数据库(如MongoDB、Elasticsearch)的服务器,可能需要增加内核的最大内存映射数:

bash
sudo sysctl -w vm.max_map_count=262144

六、一个生动的比喻:把内存理解成"小卖部"

为了让你彻底理解Linux的内存机制,我用一个比喻来说明:

把你的服务器想象成一个小卖部,内存就是货架空间

概念 比喻
Mem Total 货架总面积(5.8Gi)
Mem Used 正在卖的热门商品(1.7Gi)
Mem Free 完全空着的货架(0.125Gi)——很少,但正常
Buff/Cache 临期货品区(4.0Gi)——备货区,随时可以清空
Mem Available 老板真正能支配的灵活空间(3.8Gi)= 空闲 + 可回收缓存
Swap 后面的临时仓库(4.0Gi)——慢,但能救急

关键结论:不要看free有多少,要看available有多少!

Linux的哲学是:与其让货架空着,不如把常用的商品提前备好(Cache),这样顾客来了就能立刻拿走,速度飞快。只有当货架和备货区都满了,才会动用后面的临时仓库(Swap)。

所以,当你看到free只剩125M,但available有3.8G时,完全不用担心——你的小卖部生意好着呢!


七、总结:内存监控命令速查表

需求 推荐命令 特点
快速查看总体内存 free -h 最简单、最常用
实时监控系统状态 top 系统自带,无需安装
交互式详细监控 htop 最推荐,功能最全
虚拟内存详细统计 vmstat -s 底层数据,适合分析
最完整的内存信息 cat /proc/meminfo 内核级数据,适合脚本
查看哪个进程吃内存 ps aux --sort=-%mem 快速定位问题进程
图形化界面 gnome-system-monitor 适合桌面用户

 

0条评论
作者已关闭评论
窝补药上班啊
1432文章数
7粉丝数
窝补药上班啊
1432 文章 | 7 粉丝
原创

如何在Ubuntu中查看内存使用情况

2026-06-02 17:46:39
0
0

一、为什么要关注内存使用情况?

在Linux系统中,内存是最宝贵的资源之一。与Windows不同,Linux内核会尽可能地利用空闲内存来做缓存(Cache)和缓冲(Buffer),以提升磁盘I/O性能。这就导致一个看似矛盾的现象:你用free命令一看,内存几乎用完了,但系统却运行得非常流畅。

这是因为Linux的内存管理策略本身就是"能用就用"。真正需要关注的不是free那一列的数字,而是available那一列——它才是你的程序真正能动用的内存量。

理解了这一点,你才算真正入门了ubuntu查看内存信息这门功课。


二、五大核心命令,全方位掌握内存状态

2.1 free命令——最经典、最直观

free命令是查看内存使用情况的第一选择,也是使用最广泛的命令。它简单、高效、一目了然。

基础用法

bash
free -h

-h参数表示以人类可读的格式输出(GB、MB等),而不是 raw 的字节数。

输出示例

 
              total        used        free      shared  buff/cache   available
Mem:           7.8G        1.7G        125M         4M        4.0G        3.8G
Swap:          4.0G        1.4G        2.6G

字段解读(重点!)

字段 含义
total 物理内存总量
used 已使用内存(含应用程序 + 缓存)
free 完全空闲的内存(通常很小,这是正常的)
shared 多进程共享内存(一般可忽略)
buff/cache 缓冲+缓存占用的内存(可被快速回收)
available ✅ 真正可用的内存(最关键的指标!)

很多新手看到free只有125M就慌了,其实大可不必。真正该看的是available那一列——3.8G,说明你的系统还有大量内存可供新程序使用。

进阶用法

bash
free -m    # 以MB为单位显示
free -g    # 以GB为单位显示
free -s 5  # 每5秒刷新一次,持续监控

特别要提的是输出中的第二行 -/+ buffers/cache:

-/+ buffers/cache:        956M        6.8G
  • 第一列(956M):去掉缓存后,应用程序实际占用的内存
  • 第二列(6.8G):加上可回收缓存后,真正可用的内存

这个才是判断系统内存是否健康的核心依据。


2.2 top命令——实时动态监控

如果说free是一张快照,那top就是一段视频。它实时刷新,让你看到内存使用的动态变化。

使用方法

bash
top

进入top界面后,你会看到:

 
KiB Mem :  8003600 total,   123456 free,  5678900 used,  2190544 buff/cache
KiB Swap:  4194304 total,  2123456 free,  2070848 used.

实用快捷键

快捷键 功能
Shift + M 按内存使用率排序进程
Shift + P 按CPU使用率排序进程
k 向进程发送信号(如kill)
q 退出top

按下Shift + M后,你可以立刻看到哪个进程吃掉了最多的内存。这在排查内存泄漏、定位问题进程时极其有用。


2.3 htop命令——top的终极进化版

htop是我个人最推荐的内存监控工具,没有之一。它比top更美观、更交互、更强大。

安装

bash
sudo apt update
sudo apt install htop

启动

bash
htop

htop的核心优势

  1. 彩色界面:不同类型的信息用不同颜色标识,一目了然
  2. 鼠标支持:可以用鼠标点击选择进程
  3. 树形显示:按F5可以看到进程的父子关系
  4. 快捷排序:按F6选择按内存(MEM%)排序
  5. 搜索进程:按F3搜索特定进程名
  6. 杀进程:按F9直接终止进程

在htop界面顶部,你可以看到内存条的可视化展示——绿色是已用,蓝色是缓存,黄色是缓冲区。这种直观的图形化展示,比纯数字更容易理解系统状态。


2.4 vmstat命令——虚拟内存统计专家

vmstat(Virtual Memory Statistics)提供的是更底层、更详细的内存统计信息。

基础用法

bash
vmstat

查看详细统计

bash
vmstat -s

这会输出一大段内存相关的详细数据,包括:

  • 空闲内存(free memory)
  • 可用内存(available memory)
  • 交换空间使用情况(swap used/free)
  • 缓冲区和缓存的详细数值

实时监控模式

bash
vmstat 1 10

这表示每1秒刷新一次,共刷新10次。你可以观察si(swap in)和so(swap out)这两个值:

  • 如果siso持续很高,说明系统正在频繁使用交换空间,这是内存不足的红色警报!
  • 如果wa(I/O等待)很高,说明磁盘I/O是瓶颈

2.5 /proc/meminfo——最原始、最完整的内存档案

/proc/meminfo是Linux内核暴露的内存信息文件,包含了系统内存的所有细节。

bash
cat /proc/meminfo

核心字段

 
MemTotal:       8003600 kB    # 总内存
MemFree:         123456 kB    # 完全空闲
MemAvailable:   3800000 kB    # ✅ 真正可用
Buffers:          69112 kB    # 缓冲区
Cached:         302020 kB    # 页面缓存
SwapTotal:      4194304 kB    # 交换分区总量
SwapFree:       2141080 kB    # 交换分区空闲

如果你需要写脚本自动化监控,或者需要最精确的内存数据,/proc/meminfo就是你的数据源。


三、深入进程级内存分析

知道了系统整体的内存状态还不够,你还需要知道哪个进程在吃内存

3.1 ps命令——按内存排序查看进程

bash
ps aux --sort=-%mem | head -n 10

这条命令会按内存使用率从高到低,列出前10个进程。输出包含:

  • PID:进程ID
  • USER:运行用户
  • %MEM:内存占用百分比
  • %CPU:CPU占用百分比
  • VSZ:虚拟内存大小
  • RSS:常驻内存大小(实际占用物理内存)

RSS才是真正反映进程内存占用的指标,VSZ包含了共享库等,会偏大。

3.2 pmap命令——进程内存映射详情

bash
pmap <PID>

这会显示某个进程的完整内存映射,包括每段内存的起始地址、大小、权限、映射文件等。对于分析内存泄漏、优化内存使用非常有帮助。


四、图形化工具——不爱命令行?也有办法

如果你更喜欢图形界面,Ubuntu自带的系统监视器(System Monitor)完全够用。

安装方式

bash
sudo apt install gnome-system-monitor

启动

bash
gnome-system-monitor

它提供了和htop类似的功能,但有更友好的图形界面,包括:

  • 内存使用曲线图
  • CPU使用曲线图
  • 网络流量图
  • 进程列表(可按内存排序)

对于桌面用户来说,这是最省心的选择。


五、内存性能优化实战

掌握了查看方法,接下来聊聊优化。

5.1 释放缓存内存(谨慎操作)

Linux的Cache内存虽然可以自动回收,但有时候你确实需要手动释放:

bash
# 释放页面缓存
echo 1 > /proc/sys/vm/drop_caches

# 释放dentries和inodes
echo 2 > /proc/sys/vm/drop_caches

# 释放全部
echo 3 > /proc/sys/vm/drop_caches

⚠️ 警告:操作前务必执行sync命令,防止数据丢失!

bash
sync && echo 3 > /proc/sys/vm/drop_caches

5.2 调整Swappiness参数

Swappiness控制系统使用交换空间的积极程度,默认值是60。对于内存充足的服务器,建议调低:

bash
# 临时修改
sudo sysctl vm.swappiness=10

# 永久修改(写入配置文件)
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

将swappiness设为10,意味着系统会尽可能使用物理内存,只有在内存极度紧张时才动用Swap。

5.3 调整最大内存映射数

对于运行数据库(如MongoDB、Elasticsearch)的服务器,可能需要增加内核的最大内存映射数:

bash
sudo sysctl -w vm.max_map_count=262144

六、一个生动的比喻:把内存理解成"小卖部"

为了让你彻底理解Linux的内存机制,我用一个比喻来说明:

把你的服务器想象成一个小卖部,内存就是货架空间

概念 比喻
Mem Total 货架总面积(5.8Gi)
Mem Used 正在卖的热门商品(1.7Gi)
Mem Free 完全空着的货架(0.125Gi)——很少,但正常
Buff/Cache 临期货品区(4.0Gi)——备货区,随时可以清空
Mem Available 老板真正能支配的灵活空间(3.8Gi)= 空闲 + 可回收缓存
Swap 后面的临时仓库(4.0Gi)——慢,但能救急

关键结论:不要看free有多少,要看available有多少!

Linux的哲学是:与其让货架空着,不如把常用的商品提前备好(Cache),这样顾客来了就能立刻拿走,速度飞快。只有当货架和备货区都满了,才会动用后面的临时仓库(Swap)。

所以,当你看到free只剩125M,但available有3.8G时,完全不用担心——你的小卖部生意好着呢!


七、总结:内存监控命令速查表

需求 推荐命令 特点
快速查看总体内存 free -h 最简单、最常用
实时监控系统状态 top 系统自带,无需安装
交互式详细监控 htop 最推荐,功能最全
虚拟内存详细统计 vmstat -s 底层数据,适合分析
最完整的内存信息 cat /proc/meminfo 内核级数据,适合脚本
查看哪个进程吃内存 ps aux --sort=-%mem 快速定位问题进程
图形化界面 gnome-system-monitor 适合桌面用户

 

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0