http://hi.baidu.com/yumenhou/blog/item/623872ad2c4b93004a36d61f.html
linux系统和windows系统是互相独立的两种系统,我们在看待这两种系统的时候不能使用一种观点去对待。有时候在linux上显得很正常的东西到
了win上面可能会对系统构成危害,反之亦然,所以说看待事物就要从本质上来分析。今天就同大家讲解下为什么linux系统会吃内存“吃”的这么厉害!
最近有个月经问题,老有人问为何开机后,还没有其他服务,mem(内存占用率的意思)就被用完了?是不是内存泄露?是否要重启服务?只能说不要看现象,要看本质才能找到问题的根源。
往往给出这样的结果,怀疑内存用了90%:
Mem(内存占用率的意思): 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap(linux独有的交换分区相当于windows的虚拟内存): 2650684k total, 80k used, 2650604k free, 3006404k cached
这样怀疑很普遍,因为很多人用惯了Windows。Windows下,可以使用任务管理器查看当前进程对于内存的消耗情况。在我看
来,Windows物理内存总是留下一定的空间,就算此时物理内存有空闲时,也会让某些程序去使用虚拟内存,目的是在Windows下启动新程序时,直接
分配空闲的物理内存,这样子新程序启动速度就较快,而Linux则不然。
而在Linux下,使用top命令看到内存占用情况:
Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached
这里的结果显示使用了3.8G的used,占用率达到90%。看看free的结果你还可以对比一下:
$ free -m
total used free shared buffers cached
Mem: 4049 3784 265 0 208 2939
-/+ buffers/cache: 636 3413
Swap: 2588 0 2588
虽然MEM显示了3.7G左右的used,但是(-/+ buffers/cache)减去buffers和cache的结果可以看到,当前进程实际占用内存是636M,而可用空闲(free)内存为3.4G
。
可以这么理解:在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。
如上面的例子:使用了4G的内存,3.7G被占用,但是buuffer和cached部分作为缓存,可以使用命中率的方式提高使用效率,而且这部分缓存是根据指令随时可以释放的,我们可以认为这部分内存没有实际被使用,也可以认为它是空闲的。
因此查看目前进程正在实际被使用的内存,是used-(buffers+cache)
,也可以认为如果swap没有大量使用,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。
分享到:
相关推荐
free命令是检查一个 Linux 系统中内存使用率最常用的命令。它显示关于内存总量,已经使用的内存以及空闲内存的相关信息。 通常, free 运行时加上-h选项,意味着以人类可读的格式打印输出: free -h total used ...
Linux系统命令源码包,包含Top,Free,ps,kill等命令
Linux “free”命令可以给出类Linux/Unix操作系统中物理内存和交换内存的总使用量、可用量及内核使用的缓冲区情况。 这篇文章提供一些各种参数选项的“free”命令,这些命令对于你更好地利用你的内存会有...
Linux下看内存和CPU使用率一般都用top命令,但是实际在用的时候,用top查看出来的内存占用率都非常高,如: Mem: 4086496k total, 4034428k used, 52068k free, 112620k buffers Swap: 4192956k total,...
作为一名linux系统管理员,监控内存的使用状态是非常重要的,监控内存最常使用的命令有free、top等,下面是某个系统free的输出
解释一下Linux上free命令的输出。 下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如: FO[2][1] = 24677460 FO[3][2] = 10321516 1 2 ...
Linux的free命令来显示系统中空闲和已使用的内存.docx
linux 清理内存命令 1.清理前内存使用情况 free -m 2.开始清理 echo 1 > /proc/sys/vm/drop_caches 3.清理后内存使用情况 free -m 4.完成! 查看内存条数命令: # sync # echo 1 > /proc/sys/vm/drop_caches ...
Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,文中介绍了在Linux下查看内存用的command free命令,并对反回的参数进行解释。
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup; ◆ 系统...
Linux面试中经常提到:生产环境服务器变慢,诊断思路和性能评估谈谈? 查看整机:top cpu:vmstat 内存:free 硬盘:df 磁盘IO:iostat 网络IO:ifstat Top 精简版 命令:uptime:直接查看 先查看 cpu 和mem(内存)...
linux提供了很多命令来协助我们快速定位到错误,free命令是Linux最常用的命令之一:它可以查看系统的内存状况,包括服务器的总内存,已经使用的内存和剩下未被使用的内存,以及缓冲区和缓存各自占用的内存情况。...
Linux下安装FreeRDP连接Windows远程桌面的好软件软件.pdf
• free命令查看系统内存,虚拟内存的大小及占用情况 • date命令查看和设置当前日期和时间 • cal命令显示指定月份或年份的日历 • clock命令显示系统时钟 • ps命令查看系统进程 • kill命令向进程发送强制终止...
linux下的procps源代码,包括 top、free、ps、kill、vmstat等。从gitlab上下载的,日期20210518。系统上的top命令不好用,很久之前就想将其替换掉,终于找到源代码了。
linux环境下配置bugfree管理系统,对软件测试人员搭建测试管理系统很有帮助。
系统监控:Linux中的命令可以用来监控系统的状态,如top、htop、free等,这些命令可以帮助用户了解系统的运行状态,及时发现和解决问题。 程序调试:Linux中的命令可以用来调试程序,如gdb、strace等,这些命令可以...
Linux free命令用于显示内存状态。 free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。 语法free [-bkmotV][-s ] 参数说明: -b 以Byte为单位显示内存...
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup; ◆ 系统...
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、 crontab; ◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、 finger、mail、 nslookup; ◆ ...