M ` shows a program on linux use 322M ram, but ` top`显示它使用 58 M,为什么?

分享于 

2分钟阅读

电脑

  繁體 雙語

问题:

我在 burst.net, 上有 512M 个 vps,没有交换。 我的操作系统是 centos 6.x x64.

它启动时,只使用 58M 个内存。


$ free -m:


 total used free shared buffers cached


Mem: 512 58 454 0 0 0


-/+ buffers/cache: 58 454


Swap: 0 0 0



现在我启动了一个java程序( 由 python 开始),然后是 free -m:


$ free -m


 total used free shared buffers cached


Mem: 512 380 131 0 0 0


-/+ buffers/cache: 380 131


Swap: 0 0 0



哦是用( 380 -58=322m ) ram。

但是当我 top 时:


top - 20:37:01 up 67 days, 3:19, 2 users, load average: 0.08, 0.04, 0.00


Tasks: 20 total, 2 running, 18 sleeping, 0 stopped, 0 zombie


Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st


Mem: 524800k total, 388300k used, 136500k free, 0k buffers


Swap: 0k total, 0k used, 0k free, 0k cached



 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ DATA COMMAND 


20288 freewind 17 0 936m 48m 11m S 0.0 9.4 0:02.07 799m java 


20287 freewind 17 0 179m 10m 3404 S 0.0 2.1 0:00.08 7260 python 


20200 root 15 0 91732 3940 2948 S 0.0 0.8 0:00.03 932 sshd 


20145 root 15 0 91640 3832 2948 S 0.0 0.7 0:00.02 840 sshd 


 1474 root 18 0 80296 2312 696 S 0.0 0.4 4:06.86 1684 sendmail 



我看到java+python只使用了 48m+10m = 58M ram。 为什么 free -m 显示他们使用了 322M? 丢失的ram在哪里?


回答 1:

在你的例子中,'免费 -m'似乎只告诉你总的RAM使用率( 可能是因为你是),包括缓冲区和缓存,通常用于运行程序。 你读过 Linux吃我的RAM页面了


回答 2:

top 显示每个实例或者进程的详细信息,但 free 不显示。

当你使用 free 时,你不知道正在运行什么,你只是得到了一个总结。



显示  RAM  
相关文章