Linux下查看程序内存占用

1

使用ps命令查看内存是不准确的,因为其返回的是一个进程所用的所有空间,而由于linux的共享内存机制,一个资源可能并非一个程序所独占。[详见]
结果显示中常出现的RSS和VSZ的区别。
- RSS:Resident Set Size 进程在RAM中占用的空间,不包括swap中的部分,包含共享内存中实际装载的部分,包含所有的栈和堆空间。单位KB
- VSZ : Virtual Memory Size 包括了进程所有可使用的空间,单位KB
举例说明:某程序有500K的binary,实际装载200K,链接到了2500K的共享库文件,实际装载了1000K,有200K的栈和堆占用,其中100K在内存中,剩余的是swapped。
RSS: 400K+1000K+100K
VSZ : 500K+2500K+200K
[详见]

2

使用pmap命令。

Usage:
 pmap [options] PID [PID ...]

Options:
 -x, --extended              show details
 -X                          show even more details
            WARNING: format changes according to /proc/PID/smaps
 -XX                         show everything the kernel provides
 -c, --read-rc               read the default rc
 -C, --read-rc-from=<file>   read the rc from file
 -n, --create-rc             create new default rc
 -N, --create-rc-to=<file>   create new rc to file
            NOTE: pid arguments are not allowed with -n, -N
 -d, --device                show the device format
 -q, --quiet                 do not display header and footer
 -p, --show-path             show path in the mapping
 -A, --range=<low>[,<high>]  limit results to the given range

 -h, --help     display this help and exit
 -V, --version  output version information and exit

如下为cmake的占用内存

mapped: 670196K writeable/private: 80988K shared: 9368K

3

使用cat /proc/PID/statm

  • size (1) total program size (same as VmSize in /proc/[pid]/status)
  • resident (2) resident set size (same as VmRSS in /proc/[pid]/status)
  • shared (3) number of resident shared pages (i.e., backed by a file) (same as RssFile+RssShmem in /proc/[pid]/status)
  • text (4) text (code)
  • lib (5) library (unused since Linux 2.6; always 0)
  • data (6) data + stack
  • dt (7) dirty pages (unused since Linux 2.6; always 0)
    例子 693 406 586 158 0 535 0
    [详见]

4

使用valgrind工具,生成程序运行时的快照

5

使用top
top -p <PID>

6

使用smem命令
有USS和PSS两种,USS是独占的内存,PSS还包含了按比例分得的共享内存。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用命令"top"或者"ps aux"来查看Linux系统中程序占用内存情况。其中,"top"命令可以实时监控系统的进程和资源占用情况,而"ps aux"命令则可以列出当前系统中所有进程的详细信息,包括进程ID、占用CPU和内存等信息。 ### 回答2: 在Linux中,可以通过查看进程的内存使用情况来确定哪个程序占用了大量的内存。下面介绍两种查看进程内存使用情况的方法。 方法一:使用top命令 top命令是一个动态监视进程活动的命令,可以实时查看系统资源的使用情况。下面是使用top命令查看进程内存使用情况的步骤: 1. 打开终端,输入top命令,回车后会显示当前系统资源使用情况的实时统计。 2. 按下M键,可以将进程按照内存使用量进行排序,这样可以快速查看哪个进程占用了大量的内存。 3. 按下F键,可以选择要显示的列,选择包含“%MEM”的列可以查看每个进程的内存使用率,这对于查找内存泄漏问题非常有用。 4. 按下Q键,可以退出top命令。 方法二:使用ps命令 ps命令用于列出进程状态,其中包括进程的内存使用情况。下面是使用ps命令查看进程内存使用情况的步骤: 1. 打开终端,输入ps aux命令,回车后会显示所有进程的详细信息。 2. 找到要查看的进程,记录进程的PID号。 3. 输入命令ps -p PID -o %mem,%cpu,cmd,回车后会显示该进程的内存使用率、CPU使用率和命令行。 4. 如果要查看多个进程的内存使用情况,可以重复以上步骤,将PID号替换为需要查看的进程的PID号。 总结:两种方法各有优缺点,top命令可以实时监视进程的资源使用情况,但是对于查看多个进程的内存使用情况比较麻烦;而ps命令虽然不如top命令实时性高,但是可以很方便地查看多个进程的内存使用情况。综合来看,使用top命令和ps命令相结合可以更全面地了解进程的资源使用情况。 ### 回答3: 在Linux系统中,有多种方式可以查看进程的内存占用情况。以下是其中几种常用方法: 1. top命令 top命令是Linux系统下一个常用的性能监测工具,可以实时地展示当前活动进程的信息,包括进程的状态、CPU利用率、内存占用、进程ID等等。我们可以使用以下命令查看系统当前运行进程的情况: ``` top ``` 在显示界面中,按下shift+m键可以按内存使用量排序,并且会将内存使用情况从高到低进行排序。查找需要的进程并记录其进程ID。 2. free命令 free命令可以查看内存相关的统计信息,包括总共、已用、空闲、共享、缓存等状态。用以下命令调用free命令: ``` free -m ``` -m参数表示以MB为单位来显示内存状态。可以查询出系统已经使用的内存量以及空闲的内存量。 3. ps命令 ps命令可以列出当前系统中正在运行的所有进程,包括它们的PID(进程ID)、状态、CPU和内存占用率等信息。我们可以使用以下命令查看所有进程的详细信息: ``` ps aux ``` 其中 a 表示显示所有进程,u 表示以用户为主的格式进行显示,x 表示显示所有进程,即使进程没有终端也显示。以此,我们可以找到指定的进程,并查看其PID。 4. pmap命令 pmap命令可以显示正在运行的进程占用内存映射。可以使用以下命令查看指定进程的内存使用明细: ``` pmap -d <PID> ``` 其中-d参数用于显示每个内存映射的详细信息,PID是指定进程的ID号。pmap命令可以显示进程分配的所有内存,包括所有映射到进程中的共享库文件和堆栈段等。 总结起来, 以上是Linux查看占用内存的几种常用命令,不同情况下使用不同的命令将会更具效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值