在Linux可以使用这两个命令查看内存占用:top,pmap
top
top是linux常用的性能分析工具,可以查看各个进程的资源占用情况。
$top
top - 21:52:03 up 521 days, 4:59, 2 users, load average: 0.02, 0.04, 0.06
Tasks: 87 total, 1 running, 84 sleeping, 2 stopped, 0 zombie
Cpu(s): 0.7%us, 0.7%sy, 0.0%ni, 98.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1018600k total, 931668k used, 86932k free, 22444k buffers
Swap: 0k total, 0k used, 0k free, 93136k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1345 cc 20 0 2296m 326m 2036 S 0.0 32.8 194:05.56 java
2926 cc 20 0 2335m 320m 4688 S 0.3 32.2 19:08.68 java
4152 mysql 20 0 698m 41m 3144 S 0.0 4.2 241:43.29 mysqld
57548 cc 20 0 1034m 15m 476 S 0.0 1.5 0:00.23 node
前面5行是资源使用的汇总信息。在第四行的Mem为内存使用情况
Mem: 1018600k total, 931668k used, 86932k free, 22444k buffers
汇总的内存信息依次是:total->总的内存,used->已使用的内存,free->可用内存,buffers->buffer占用
进程占用资源情况,输出内容:
- PID:进程的ID
- USER:进程所有者
- PR:进程的优先级别,越小越优先被执行
- NI:nice值。负值表示高优先级,正值表示低优先级
- VIRT:进程占用的虚拟内存
- RES:进程占用的物理内存
- SHR:进程使用的共享内存
- S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
- %CPU:进程占用CPU的使用率
- %MEM:进程使用的物理内存和总内存的百分比
- TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
- COMMAND:进程启动命令名称
%MEM为占用的内存百分比。
快捷键
进入top界面后,可以使用m和M两个快捷键。
- m:显示/隐藏内存资源汇总,及第四和第五行
- M:进程占用资源的%MEM列按降序排列
pmap
如果需要查看进程占用内存的详情,可以使用pmap
$ pmap -d pid
pid可以使用ps查到。
输出
$pmap -d 33488
33488: /usr/bin/java xxx
Address Kbytes Mode Offset Device Mapping
0000000000400000 4 r-x-- 0000000000000000 0ca:00001 java
0000000000600000 8 rw--- 0000000000000000 0ca:00001 java
00000000015cf000 928 rw--- 0000000000000000 000:00000 [ anon ]
pmap会列出进程id对应的命令,以及内存地址的映射情况。