linux的内存占用量大的问题

我装了一个服务器,但是运行时间长了内存占用量就特别大。用free命令结果如下:
             total       used       free     shared    buffers     cached
Mem:        376460     362820      13640          0     125468     148908
-/+ buffers/cache:      88444     288016
Swap:       409648       7528     402120

不知道是哪里的问题,请指教

答:

 

Linux在磁盘操作上的速度是要比windows快的, 一个例子是使用bittorent时windows下使用久了可能会对硬盘不好,而在linux下是不会对硬盘有害的,为什么呢,因为两个系统为磁盘开的 缓冲大小不同,windows开的是一个相对较小的缓冲,更多的是靠磁盘硬件来进行缓冲,而Linux则是把所有的可用的内存都用来做磁盘缓存,在有新的 进程(程序)运行时,退出一部分缓存给进程,这样一来,你就会发现你的Linux系>统可用内存好象总是很小。这不是某个发行版的问题,是 所有Linux都有这个现象。
                                                                                                                           
用free可以查看内存,比如下面是我机器的情况
[root@bzimage root]# free
                   total   used    free     shared    buffers     cached
Mem:               257044  241908  15136    0         12764       60880
-/+ buffers/cache:         168264  88780
Swap:              265032  900     264132
                                                                                                                           
一共有四行,第二行显示只有15M空闲内存,但是被buffer的和cache的分别是12M和61M,所以在第3行你就看到了free的内存是88M,怎么来>的88
= 15 + 12 + 61, 所以系统真正能用的物理内存大小,现在是88M。

楼主的机器实际空闲内存为288M,实际使用内存为88M,内存使用率是88/288

答:

Linux系统会把大部分可用内存划归自己使用。这是Linux管理内存的一种方式。他不是在需
要分配空间的时候再到物理内存中去划一块归某个进程使用,而是提前就把整个内存管理起
来,需要的时候再分配给某个进程。这样的好处是因为有了统一管理,不容易出现内存碎片
,提高了效率。这些linux管理的内存大多数是空闲状态,你可以看看当新的程序运行的时
候,Linux的内存占用不会提高,除非机器的内存已经耗尽。这时Linux会把一些不常用的进
程换出到交换分区。
linux里面显示的已经使用内存是程序所占的内存和用作磁盘缓存的内存。
而free的内存是真正的一点有没有派上用场的内存。
所以看程序真正占用的内存应该要减掉cacheinux的内存分配原则就是要占用尽量多的内存来提供尽可能快的速度,要不内存不用放在那里干嘛……

正常情况下,物理内存应该是接近完全占用才好,而交换内存占用才是越少越好

上一篇: is_numeric 检测变量是否为数字或数字字符串   下一篇: System.map文件简介

提交疑问

请先登录 QQ微博登录

回顶部