linux 应用内存分析,Linux内存使用情况分析

摘要:在Linux系统下,系统所占用的内存不像windows那样明了,对于大多数用户而言是否应该增加内存就没有依据。本文将较为深入的分析Linux内存的占用情况,为系统的使用者提供较为准确的内存使用数据。

1.linux系统使用了多少内存

在系统使用的情况下,我们可以使用free,top,vmstat,或是cat /proc/meminfo来得到系统内存的使用数据,但是显示给我们的结果也往往令我们失望:

peter@newboy:~$ free

total       used       free     shared    buffers     cached

Mem:       3096648    2124360     972288          0      46756     421844

-/+ buffers/cache:    1655760    1440888

Swap:            0          0          0

上面输出结果中哪一个数据能够准确的反应当前情况下系统使用内存的值,恐怕大家都有点糊涂。

peter@newboy:~$top

top - 16:08:07 up  2:03,  4 users,  load average: 0.28, 0.37, 0.28

Tasks: 166 total,   2 running, 164 sleeping,   0 stopped,   0 zombie

Cpu(s):  7.6%us, 21.5%sy,  6.9%ni, 60.7%id,  1.0%wa,  1.0%hi,  1.3%si,  0.0%st

Mem:   3096648k total,  2126136k used,   970512k free,    46988k buffers

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

这组数据中哪一个可以反应当前系统的占用情况呢,同样让人糊涂。以上两组数据都可以看出内存总量是3096648k,但是使用量很显然不是2126136k,因为运行的程序占用的内存不可能有这么大。那么是free中显示的1655760K吗?这个只是包含了真正使用的内存,但是也不能完整的反映使用的内存的大小。

让我们再看看vmstat 中的数据吧

peter@newboy:~$ vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----

r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa

3  0      0 966296  47452 425028    0    0    48    13  775  475 10  6 84  1

同样令人糊涂。还有cat /proc/meminfo的数据(只截取了其中一部分):

root@newboy:~# cat /proc/meminfo

MemTotal:        3096648 kB

MemFree:          964132 kB

Buffers:           47752 kB

Cached:           425412 kB

SwapCached:            0 kB

Active:          1575616 kB

Inactive:         316444 kB

Active(anon):    1428260 kB

Inactive(anon):       16 kB

Active(file):     147356 kB

Inactive(file):   316428 kB

这些都有点令人糊涂,究竟当前系统使用了多少内存呢?

2.究竟使用了多少内存

这些命令的本身都是很好的查看内存的工具,给出了很好的参考价值,但是就是没有给出一个较为直观的内存占用的信息。这些工具显示的数据没有错误,造成不能准确的显示Linux下系统程序占用内存的真正原因是Linux本身的特性决定的。

众所周知,Linux系统本身的特点是会将大量的工作在内存中进行,这样就能减少系统的I/O时间。故有很多数据和使用过的结构在内存中都会保留,以备程序重新运行所用。linux在统计使用的内存的过程中包括了buffer的内存和cached的内存。前者是那些即将写到磁盘的数据的临时存放区,后者是那些将继续被cpu读取的数据的存放区。所以使用内存的情况包括:程序使用的内存的大小,还包括linux buffer的部分和cache的部分。从free的命令结果中也可以看出来:

root@newboy:/proc/1593# free -m

total       used       free     shared    buffers     cached

Mem:          3023        901       2122          0         50        417

-/+ buffers/cache:        434       2589

Swap:            0          0          0

从上面的数据可以看出来901=50+417+434  这个数据说明被使用的内存中包含了buffer的内容也包含了cached的内容。当然实际的使用内存的数量还不全是434M内存,

上面的内存数据还可以得到一下的等式:3023=901+2122, 3023=50+417+434+2122, 3023=434+2589。这些等式说明了linux使用内存的情况

阅读(4453) | 评论(0) | 转发(1) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值