我装了一个服务器,但是运行时间长了内存占用量就特别大。用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的内存分配原则就是要占用尽量多的内存来提供尽可能快的速度,要不内存不用放在那里干嘛……
正常情况下,物理内存应该是接近完全占用才好,而交换内存占用才是越少越好