技术栈

技术栈

linux内存一直占满问题

6年前 (2018-06-14) 热度:1635 ℃

用的阿里云,开始是512的内存,数据量增大后,说卡,后面增加到1G,还是很快用光了,后面一下加到 4G,开始还好,后面没两天又跑满了,查了资料,才明白。

[root@iZ9488z4qfcZ ~]# free
             total       used       free     shared    buffers     cached
Mem:       3921112    3767268     153844          0     422196    2655716
-/+ buffers/cache:     689356    3231756
Swap:      1023992          0    1023992
在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方 面,区别于 Windows的内存管理。主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。而Windows 是只在需要内存时,才为应用程序分配内存,并不能充分利用大容量的内存空间。换句话说,每增加一些物理内存,Linux 都将能充分利用起来,发挥了硬件投资带来的好处,而Windows只将其做为摆设,即使增加8GB甚至更大。

Linux 的这一特性,主要是利用空闲的物理内存,划分出一部份空间,做为 cache 和 buffers ,以此提高数据访问性能。

资料:

Linux 优先使用物理内存,当物理内存还有空闲时,linux是不会施放内存的,即时占用内存的程序已经被关闭了(这部分内存就用来做缓存了)。也就是说,即时你有2G的内存,用过一段时间后,也会被占满。这样做的好处是,启动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有好处。

你可以用 free 指令查看一下输出,用 used 减去 buffer 和 cache,才是你运行中的程序所占用的空间,举例如下: 

total     used      free    shared   buffers    cached

Mem:   516300   504264  12036     0       88396    236792

-/+ buffers/cache: 179076 337224

Swap: 1544184 21276 1522908

504264 - 88396 - 236792 = 179076

也就是说目前正在被使用的内存只有 179 兆。不要被 504兆的used吓住了。 

windows则总是给内存留下一定的空闲空间,即时内存有空闲也会让程序使用一些虚拟内存,这样做的好处是,启动新的程序比较快,直接分给它些空闲内存就可以了,而linux下呢?由于内存经常处于全部被使用的状态,则要先清理出一块内存,再分配给新的程序使用,因此,新程序的启动会慢一些。

另外,内存是随机访问的,也就是说,无论你的内存占用了多少,数据的存取时间都是相同的,跟硬盘不同。

Linux 优先使用物理内存,当物理内存还有空闲时,linux是不会施放内存的,即时占用内存的程序已经被关闭了(这部分内存就用来做缓存了)。也就是说,即时你有2G的内存,用过一段时间后,也会被占满。这样做的好处是,启动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有好处。


你可以用 free 指令查看一下输出,用 used 减去 buffer 和 cache,才是你运行中的程序所占用的空间,举例如下: 

total     used      free    shared   buffers    cached

Mem:   516300   504264  12036     0       88396    236792

-/+ buffers/cache: 179076 337224

Swap: 1544184 21276 1522908

504264 - 88396 - 236792 = 179076

也就是说目前正在被使用的内存只有 179 兆。不要被 504兆的used吓住了。 

windows则总是给内存留下一定的空闲空间,即时内存有空闲也会让程序使用一些虚拟内存,这样做的好处是,启动新的程序比较快,直接分给它些空闲内存就可以了,而linux下呢?由于内存经常处于全部被使用的状态,则要先清理出一块内存,再分配给新的程序使用,因此,新程序的启动会慢一些。

另外,内存是随机访问的,也就是说,无论你的内存占用了多少,数据的存取时间都是相同的,跟硬盘不同。

打赏
TAGS: Linux

相关文章

常用命令-查找端口对应的进程

常用命令-查找端口对应的进程

常用命令-查找端口对应的进程    netstat -nao    tasklist | findstr "8081"   &nb...

华为交换机常用命令

华为交换机常用命令

1、华为HUAWEI交换机查看cpu:dis cpu-usage 2、华为HUAWEI交换机查看ip地址冲突display arp ip-conflict track3、华为HUAWEI交换...

华三交换机配置本地端口镜像

华三交换机配置本地端口镜像

华三交换机配置本地端口镜像...

Secure crt软件批量生成、添加会话session

Secure crt软件批量生成、添加会话session

了解Securecrt软件的人,都知道这个软件什么都好。唯一令人苦恼的是,当需要维护的设备达到一定数量时,如几十甚至上百台时,在Securecrt上手动添加session的工作就会变得很繁重且重复低下...

服务器不支持curl_exec的解决办法

服务器不支持curl_exec的解决办法

windows下开启方法:1、拷贝PHP目录中的libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll文件到 system32 目录。2、修改php....

linux常用命令

linux常用命令

更改IP修改IP:vi /etc/sysconfig/network-scripts/ifcfg-eth0输入i进入编辑模式DNS1="8.8.8.8"GATEWAY="...