Linux 怎么看单个程序占用的内存?

2020-12-09 16:07:04 +08:00
 auto8888

想查下内存占用,用 top 就只看到虚拟内存

Mem: 1048868K used, 2868352K free, 336K shrd, 6412K buff, 914548K cached

CPU: 1.1% usr 5.0% sys 0.0% nic 92.3% idle 0.0% io 0.0% irq 1.4% sirq

Load average: 1.36 1.41 1.30 4/173 28193

PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND

16720 31555 root S 2146m 55.7 3 4.7 /home/root/App

这个 VSZ 基本不变化,但是用 free -m 可以看到

         total         used         free       shared      buffers

Mem: 3825 930 2894 0 3

-/+ buffers: 927 2898

Swap: 0 0 0

随着程序运行,free 的大小在慢慢变小,我想看这个 used 是谁占用了,网上搜了一通都不知所云。。。

1639 次点击
所在节点    问与答
9 条回复
cheng6563
2020-12-09 16:08:58 +08:00
top 按 f,把 USED 调出来
cheng6563
2020-12-09 16:19:37 +08:00
另外第一行的 used 和 free 是包括了磁盘缓存的。得看-/+ buffers/cache:那一行。
auto8888
2020-12-09 16:24:29 +08:00
@cheng6563 没反应,倒是按 s 有变化了

Mem total:3917220 anon:81888 map:13252 free:2865656

slab:20900 buf:7256 cache:915120 dirty:12 write:0

Swap total:0 free:0

PID VSZ VSZRW RSS (SHR) DIRTY (SHR) STACK^COMMAND

16720 2146m 1169m 78088 1640 71984 0 132 /home/root/App
auto8888
2020-12-09 16:35:37 +08:00
@cheng6563 好像看 RSS 就行了。。。
kangfenmao
2020-12-09 17:52:16 +08:00
htop
nuandong
2020-12-09 18:44:56 +08:00
看 rss
lean
2020-12-09 18:47:14 +08:00
/proc/进程 id/mem
muskill
2020-12-10 08:22:44 +08:00
top -p pid
codehz
2020-12-10 10:08:31 +08:00
说实话内存占用测不准的,看 rss 你全部进程加起来可能要大于总内存,看 vsz 一个进程就可以远大于物理内存总量,看 uss 可能你都 oom 了它还汇报一个很小的数值,看 pss 你一个进程的内存使用还会受到别的进程启动退出影响)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/733796

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX