📅  最后修改于: 2023-12-03 15:41:50.886000             🧑  作者: Mango
在开发和部署 Linux 应用程序时,内存使用情况通常是一个至关重要的指标。高内存使用率可能会导致应用程序的性能下降或崩溃。因此,了解如何跟踪 Linux 中的内存使用情况对程序开发人员至关重要。
在 Linux 系统中,内存被分为许多不同的区域,包括用户空间和内核空间。应用程序一般在用户空间运行,而内核空间则用于操作系统内部运行。内存使用情况可以通过一些命令和工具来监测。
free 命令可以显示已使用和可用的物理内存和交换空间。使用 free 命令时,输出中的表格的第一行为总内存,第二行为当前可用的内存,第三行为已用的内存,第四行为缓存和缓冲区的内存占用量,第五行为交换空间。
$ free -h
total used free shared buff/cache available
Mem: 31G 1.1G 28G 2.3M 1.3G 29G
Swap: 0B 0B 0B
top 命令可以实时地显示系统的内存使用情况。在 top 命令中,内存使用情况在第二行中显示。输出包括总内存、已用的内存、空闲的内存、共享内存、缓存和缓冲区内存的使用情况。top 命令还可以按照内存使用情况来排序进程。
$ top
top - 11:52:57 up 305 days, 5:39, 2 users, load average: 0.13, 0.12, 0.09
Tasks: 163 total, 1 running, 162 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 32571920 total, 29426276 free, 4448580 used, 3658064 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 27759912 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6807 root 20 0 17376 3636 3116 R 0.0 0.0 0:00.06 top
1 root 20 0 207244 10080 7624 S 0.0 0.0 111:30.08 systemd
ps 命令可以列出当前运行的进程以及它们的内存使用情况。使用 ps 命令时,命令行中的 -eo 可以指定输出列表。在输出列表中包括 RSS、VSZ 和 %MEM 列可以用来查看进程的内存使用情况。
$ ps -eo pid,comm,rss,vsz,%mem
PID COMMAND RSS VSZ %MEM
1 systemd 8936 2072806 0.02
2 kthreadd 0 0 0.00
4 kworker/0:0H 0 0 0.00
6 mm_percpu_wq 0 0 0.00
7 ksoftirqd/0 0 0 0.00
pmap 命令可以查看进程使用的内存的详细信息。它可以显示一个进程的内存映射,包括动态链接库、共享内存和堆栈空间等。使用 pmap 命令时,必须指定进程的 PID。
$ pmap 6807
6807: /usr/bin/top
0000556c74eb1000 1860K r-x-- top
0000556c7504c000 220K r---- top
0000556c75090000 44K rw--- top
0000556c7509b000 16K rw--- [ anon ]
00007f3e9aeb1000 14344K r-x-- libc-2.27.so
00007f3e9b02c000 2044K ----- libc-2.27.so
00007f3e9b22b000 16K r---- libc-2.27.so
00007f3e9b22f000 8K rw--- libc-2.27.so
00007f3e9b231000 24K rw--- [ anon ]
00007f3e9b236000 124K r-x-- ld-2.27.so
00007f3e9b41f000 12K rw--- [ anon ]
00007f3e9b43b000 4K r---- ld-2.27.so
00007f3e9b43c000 4K rw--- ld-2.27.so
00007f3e9b43d000 4K rw--- [ anon ]
...
了解如何监测 Linux 系统的内存使用情况对于程序开发人员来说是至关重要的。本文介绍了 free、top、ps 和 pmap 等常用的命令和工具来监测 Linux 系统中的内存使用情况。根据实际需求,选择相应的工具将有助于定位内存使用问题并优化应用程序的性能。