-1
free -m 
             total       used       free     shared    buffers     cached
Mem:          7974       6993        981          0        557        893
-/+ buffers/cache:       5542       2432
Swap:         2047          0       2047

你看我的系统已经使用了5542MB的内存,但是当我用ps aux来查看谁在使用它的时候,我想不通。

ps aux | awk '$6 > 0{print $3, $4, $5, $6}'
%CPU %MEM VSZ RSS
0.0 0.0 10344 700
0.0 0.0 51172 2092
0.0 0.0 51172 1032
0.0 0.0 68296 1600
0.0 0.0 12692 872
0.0 0.0 33840 864
0.0 0.0 10728 376
0.0 0.0 8564 648
0.0 0.0 74856 1132
53.2 0.5 930408 45824
0.0 0.0 24236 1768
0.0 0.0 51172 2100
0.0 0.0 51172 1040
0.0 0.0 68296 1600
51.9 0.5 864348 42740
0.0 0.0 34360 2672
0.0 0.0 3784 528
0.0 0.0 3784 532
0.0 0.0 3784 528
0.0 0.0 3784 528
0.0 0.0 3784 532
0.0 0.0 65604 900
0.0 0.0 63916 832
0.0 0.0 94020 5980
0.0 0.0 3836 468
0.0 0.0 93736 4000
0.0 0.0 3788 484
0.0 0.0 3652 336
0.0 0.0 3652 336
0.0 0.0 3684 344
0.0 0.0 3664 324
0.0 0.0 19184 4880
0.0 0.0 3704 324
0.0 0.0 340176 1312
0.0 0.0 46544 816
0.0 0.0 10792 1092
0.0 0.0 3824 400
0.0 0.0 3640 292
0.0 0.0 3652 332
0.0 0.0 3652 332
0.0 0.0 3664 328
0.0 0.0 4264 1004
0.0 0.0 4584 2368
0.0 0.0 77724 3060
0.0 0.0 89280 2704

你看,RSS总和是152.484MB,VSZ总和是3376.34MB,所以不知道谁吃掉了剩下的内存,内核?

4

1 回答 1

2

从我的系统:

$ grep ^S[^wh] /proc/meminfo 
Slab:            4707412 kB
SReclaimable:    4602900 kB
SUnreclaim:       104512 kB

这三个指标是平板分配器持有的数据结构。虽然它是不可SUnreclaimable回收的,SReclaimable但它就像系统中的任何其他缓存一样 - 它将可供处于内存压力下的进程使用。不幸的是free似乎没有考虑到这一点,正如我在这个较早的答案中详细提到的那样,这部分内存很容易增长到几 GB 的内存......

如果您真的想查看您的进程正在使用多少内存,您可以尝试通过我的帖子中描述的缓存清空过程 - 您可以跳过与交换相关的部分,因为您的系统似乎并没有使用任何交换内存.

于 2013-01-07T07:45:44.143 回答