Linux查看内存占用

本文介绍了在腾讯云部署微服务时遇到的nacos进程自动退出问题,怀疑原因是服务器2G运存不足。分享了三种查看Linux内存占用的方法:1)使用`top`命令实时显示进程动态,关注内存和CPU占用;2)利用`free`命令查看内存使用情况,理解`free`和`available`的区别;3)借助`jmap`分析Java应用的堆内存,辅助JVM调优。通过这些工具,可以有效监控和管理服务器内存。

        这两天使用腾讯云部署自己的网站,发现部署微服务的时候nacos经常自动退出,开始怀疑是运存不够了。看了一下发现自己的服务器只有2G运存,之前没注意过服务器的内存,所以记录一下Linux查看内存占用的方法。

1.top命令:

top命令用于实时显示 process 的动态。

"M"命令根据内存的占用情况降序排列("P"是CPU占用情况降序排列)

      对应的表示:

PID进程的ID
USER进程所有者
PR进程的优先级别,越小越优先被执行
NInice
VIRT进程占用的虚拟内存
RES进程占用的物理内存
SHR进程使用的共享内存
S进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU进程占用CPU的使用率
%MEM进程使用的物理内存和总内存的百分比
TIME+该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND进程启动命令名称

我们可以通过这个命令来查看当前内存占用,并且根据PID杀掉不用的程序释放内存

2.free命令

        指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

total总计物理内存的大小。
used已使用物理内存的大小。
free可用物理内存的大小。
Shared多个进程共享的内存总额。
Buffers/cached磁盘缓存的大小。
aviliable应用程序的角度看到的可用内存数量

SWAP是交换分区,也就是我们通常所说的虚拟内存。

        在CentOS中的free和available也是有点意思的,我本以为都是指的“可用”,我查阅了一下,区别如下:

  • free 是真正尚未被使用的物理内存数量。
  • available 是从应用程序的角度看到的可用内存数量。

        我们知道,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。

3.jmap

        jmap命令可以获得运行中的jvm的堆的快照,检查内存泄漏,检查一些大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。

jmap -heap pid:通过可查看堆内存的配置情况及使用情况
jmap -histo pid:统计对象的创建数量
jmap -dump:format=b,file=heapDump pid:生成dump文件与jhat配合使用
jhat -port xxxx heapDump:浏览器访问localhost:xxxx即可查看dump

我们通过命令查看占用最多的java:

通过可查看堆内存的配置情况及使用情况

然后就可以根据自己的需求进行JVM调优了

<think>我们参考了引用[1][2][3]中关于检查Linux内存使用情况的方法,结合用户需求,提供以下解决方案: ### 一、系统级内存概览 1. **`free`命令**(最常用): ```bash free -h # 以人类可读格式显示(GB/MB) ``` 输出示例: ``` total used free shared buff/cache available Mem: 7.7G 1.2G 5.8G 10M 0.7G 6.2G Swap: 2.0G 0B 2.0G ``` - **关键指标**:`available`列表示实际可用内存(含缓冲)[^3] 2. **`top`命令**(动态监控): ```bash top ``` 进入界面后: - 按 `M`:按内存使用排序 - 按 `P`:按CPU使用排序 - 按 `q`:退出 - 首行显示总内存和已用内存(`MiB Mem`行)[^2] --- ### 二、进程级内存分析 1. **`ps`命令**(精确统计): ```bash ps aux --sort=-%mem | head -10 # 显示内存占用前10的进程 ``` 输出列说明: - `%MEM`:进程物理内存占比 - `RSS`:实际占用物理内存(非虚拟内存)[^1] 2. **`htop`工具**(交互式): ```bash htop # 需安装(sudo apt install htop) ``` - 彩色显示,支持鼠标操作 - 内存列默认显示`RES`(同RSS) --- ### 三、高级工具 1. **`vmstat`**(虚拟内存统计): ```bash vmstat -s # 显示详细内存报告 ``` 输出示例: ``` 8058864 K total memory 1234567 K used memory 5678901 K active memory 2345678 K inactive memory ...(省略)... ``` 2. **`/proc/meminfo`文件**(内核数据): ```bash cat /proc/meminfo | grep -E 'MemTotal|MemFree|MemAvailable' ``` 直接读取内存原始数据(单位KB)[^3] --- ### 四、图形化方案(如有桌面环境) - **GNOME系统监视器**: ```bash gnome-system-monitor ``` - **KDE系统卫士**: ```bash ksysguard ``` --- ### 操作建议 1. **快速检查** → 用 `free -h` 2. **定位高内存进程** → 用 `ps aux --sort=-%mem | head` 3. **实时监控** → 用 `top` 或 `htop` > **注意**:内存统计中`buff/cache`通常可被应用程序复用,真正需要关注的是`available`值[^3]。 §§相关问题§§ 1. Linux中buffer和cache有什么区别? 2. 如何监控Linux服务器内存使用趋势? 3. 服务器内存不足时有哪些优化方法? 4. Linux的OOM Killer机制是如何工作的? [^1]: Shell script to check top memory & cpu consuming process in Linux. – 2024 [^2]: How to Check Swap and Memory Usage Live via the 'top' Command on Oracle Linux. (文档 ID 2422888.1) [^3]: 5 commands to check memory usage on Linux. – Linux Handbook</think>在Linux服务器查看内存使用情况,以下是几种常用且高效的方法,结合了引用内容中的关键信息: --- ### 一、实时监控工具 1. **`free`命令**(基础概览): ```bash free -h # 以人类可读格式显示(GB/MB) ``` **输出示例**: ``` total used free shared buff/cache available Mem: 7.7G 1.2G 5.8G 10M 0.7G 6.2G Swap: 2.0G 0B 2.0G ``` - **关键指标**:`available`列表示实际可用内存(含缓冲)[^3] 2. **`top`命令**(动态进程级监控): ```bash top ``` - 进入界面后按 **`M`**(按内存排序) - 首行显示总内存/已用内存(`MiB Mem`行)[^2] 3. **`htop`增强版**(交互式): ```bash htop # 需安装(sudo apt install htop) ``` - 彩色显示,支持鼠标操作 - 内存列默认显示`RES`(实际物理内存占用) --- ### 二、进程级内存分析 1. **按内存排序进程**: ```bash ps aux --sort=-%mem | head -10 # 显示内存TOP10进程 ``` **输出列说明**: - `%MEM`:进程物理内存占比 - `RSS`:实际占用物理内存(非虚拟内存)[^1] 2. **筛选特定进程**: ```bash ps -eo pid,user,%mem,command --sort=-%mem | grep nginx ``` --- ### 三、高级内存诊断 1. **`vmstat`**(虚拟内存统计): ```bash vmstat -s # 显示详细内存报告 ``` **关键输出**: ``` 8058864 K total memory 1234567 K used memory 5678901 K active memory 2345678 K inactive memory ...(省略)... ``` 2. **内核内存数据**: ```bash cat /proc/meminfo | grep -E 'MemTotal|MemFree|MemAvailable' ``` - 直接读取内存原始数据(单位KB)[^3] --- ### 四、图形化工具(如有桌面环境) - **GNOME系统监视器**: ```bash gnome-system-monitor ``` - **KDE系统卫士**: ```bash ksysguard ``` --- ### 操作建议 1. **快速检查** → `free -h` 2. **定位高内存进程** → `ps aux --sort=-%mem | head` 3. **实时监控** → `top` 或 `htop` 4. **深度分析** → `vmstat -s` 或 `/proc/meminfo` > **注意**:内存统计中`buff/cache`通常可被应用程序复用,真正需要关注的是`available`值[^3]。若发现内存持续高于90%,需检查进程级占用[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PigeonEssence

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值