技术栈

技术栈

linux内存一直占满问题

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

用的阿里云,开始是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

相关文章

Wireshark使用教程(界面说明、捕获过滤器表达式、显示过滤器表达式)

Wireshark使用教程(界面说明、捕获过滤器表达式、显示过滤器表达式)

一、说明1.1 背景说明对于大多数刚开始接触wireshark的使用者而言,经常是开始的时候时候看到wireshark能把所有数据包都拦截下来觉得强无敌,但是面对一大堆的数据包要问有什么用或者说想要找...

Linux下禁止ping最简单的方法

Linux下禁止ping最简单的方法

       ping是一个通信协议,是ip协议的一部分,tcp/ip 协议的一部分。利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障。...

网络监控项目,超过254个点位如何设置IP地址?

网络监控项目,超过254个点位如何设置IP地址?

很多朋友都问到,对于大型监控项目如何设置ip地址?对于监控项目来说,很多故障的原因都是跟ip地址设置不当有关,如ip冲突,或者有几路监控图像没有显示等,都是跟ip有一定关联,合理的分配ip地址十分重要...

 iTop二次开发教程-iTop首页欢迎页

iTop二次开发教程-iTop首页欢迎页

itop/datamodels/2.x/itop-welcome-itil/datamodel.itop-welcome-itil.xml此文件为欢迎页默认配置文件,可以进行修改,所有用户都会显示...

cacti系统服务器异常关机后不显示图形的解决方案

cacti系统服务器异常关机后不显示图形的解决方案

       由于部门使用的Cacti系统添加交换机到了1900多台,图形数量更是达到了59738个,数据源也到了60644个,各位大神,国内罕见吧! ...

删除无法右键删除的顽固文件

删除无法右键删除的顽固文件

新建一个文本文件输入DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1然后将文本文档保存为.bat格式的。将无法删除的文件拖至.bat文件上就会自动删除了...