以前我对这块认识很模糊,而且还有错误的认识;今天由我同事提醒,所以我决定来好好的缕缕这块的关系。
图:
-------------------------------------------1.参数含义-----------------------------------------------------------------------
Mem:表示物理内存统计
total: 表示系统总物理内存5993156kb(约5852M)
used: 表示总计分配给缓存(包含buffers 与cached),但其中可能部分缓存未实际使用
free:表示未分配的内存
shared: 表示共享内存
buffers:表示系统分配但未被使用的buffers数量
cached:表示系统分配但未被使用的cache的数量
在Free命令中显示的buffer和cache,它们都是占用内存:
buffer : 作为buffer cache的内存,是块设备的读写缓冲区,更靠近存储设备,或者直接就是disk的缓冲区。
cached: 作为page cache的内存, 文件系统的cache,是memory的缓冲区 。
如果cached 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小 。
-/+ buffers/cached: 表示物理内存的缓存统计
used: 表示实际使用的buffers与cache的总量,这就是实际使用的内存总量
free: 表示未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可能内存(所以一般linux机器看可用内存就看此值)
Swap: 表示硬盘上交换分区的使用情况。只有mem被当前进程实际占用完,即没有了buffers和cache时,才会使用到swap。
-------------------------------------------2.常用概念-----------------------------------------------------------------------
物理内存总大小 :
mem.total=mem.used+mem.free
mem.total=(-/+ buffers/cached).used+(-/+ buffers/cached).free
已经分配的内存大小:
mem.used=mem.buffers+mem.cached+(-/+ buffers/cached).used
实际可用内存大小:
(-/+ buffers/cached).free=mem.free+mem.buffers+mem.cached
-------------------------------------------3.手工清除缓存------------------------------------------------------------------
# sync
# echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
cache释放:
a.To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
b.To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
c.To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
说明,释放前最好sync一下,防止丢数据。
-------------------------------------------4.常见疑惑-----------------------------------------------------------------------
1.用户常见的疑问是,为什么free这么小,是否关闭应用后内存没有释放?
但实际上,我们都知道这是因为Linux对内存的管理与Windows不同,free小并不是说内存不够用了,应该看的是free的第二行最后一个值:-/+ buffers/cache: 2592892Kb,这才是系统可用的内存大小。
2.free内存还有200M,cache里有58G,然后程序就跪了,抛了个tcmalloc allocation failed 65536, out of memory(needed 65312 bytes). 需要内存时为什么cache里面的没能释放?
cache 中有程序在占用就无法释放了。
3.有时候free太小,cached特别大时启动mysql会报错,这个是什么原因?
这说明内存确实不够,cached并不是全部可以释放的,有程序占用就不能释放了
4.我的Linux上cache占满RAM时系统非常慢,系统也不自动释放cache。所以号称“cache对性能只有好处而没坏处”是假的!
这个要看你实际是使用的应用是什么。cache能带来的好处是,减轻频繁读写硬盘的需要,也就是降低IO,这特别是对于服务器上的应用来说是很常见的。相反,如果cache需要频繁更新,那会出现您提到的问题了
Linux-Memory小记的更多相关文章
-
linux memory release commands内存清理/释放命令
linux 内存清理/释放命令 You could find reference from here: http://jingyan.baidu.com/article/597a06436a687f3 ...
-
如何展开Linux Memory Management学习?
Linux的进程和内存是两座大山,没有翻过这两座大山对于内核的理解始终是不完整的. 关于Linux内存管理,在开始之前做些准备工作. 首先bing到了Quora的<How can one rea ...
-
查看 Linux memory 内存占用
linux 系统内存: 如果系统内存使用过高 就会产生 out of memory exception 现象: 通常 在mongo 默认服务运行资源是不受限制的.也会占用而同一系统运行的其他服务: 当 ...
-
linux memory dump--http://www.forensicswiki.org/wiki/Tools:Memory_Imaging
Linux provides two virtual devices for this purpose, '/dev/mem' and '/dev/kmem', though many distrib ...
-
linux 守护程序小记(指定进程不存在则启动 )
最近想在debian 下做个守护进程.用于守护指定的程序一直处于运行状态.网上查了下,有Crontab方式和写脚本执行方式. Crontab Crontab 是系统自带的,类似于Windows的计划任 ...
-
Linux 命令小记
1. pidof 进程名 :获取进程的pid,例如 pidof memcached 得到5333 2. unset Shell变量 :取消设置一个shell变量,从内存和shell的导出环境中删除它, ...
-
移动硬盘安装linux系统小记
由于某种原因,笔记本电脑不在身边,因教学需要必须进行电脑展示教学,所以就有了如下的做法,写下来也是为以后方便吧.-- 目前手头有移动硬盘,怎么样才能实现用移动硬盘进行教学呢?!!! 机房若干台机器都是 ...
-
linux下小记
今天碰到一个问题 记录下 /usr/bin/ld: cannot find ld 和ldconfig的区别 使用makefile编译的时候提示ld提示某个so找不到 当时使用ldconfig查了下 发 ...
-
Linux学习小记(1)
学习Linux,进行阶段性总结,权当笔记方便日后翻阅和查看. 在此特别推荐peida的博客,他的有关Linux的理解个人感觉深入浅出,很适合入门的小白来理解和学习. 说一说针对IP的修改,ifconf ...
-
常用Linux源小记
常用国内镜像站: 阿里云:http://mirrors.aliyun.com/ 中科大:http://mirrors.ustc.edu.cn/ 清华:https://mirrors.tuna.tsin ...
随机推荐
-
jquery mobile RedirectToAction url地址不更新
使用asp.net mvc 和 jquery mobile 开发手机版网站 发起一个post请求,在第一个action里做了处理,用RedirectToAction 跳转到其他action继续处理后, ...
-
Android_文件存储
因为项目的需求,想实现一个指导使用的欢迎页效果,通过在网上的询问,给的一种解决办法是通过SharedPreferences文件存储方式来实现,具体的实现类似于通过第一次取得SharedPreferen ...
-
hdu 3472 HS BDC(混合路的欧拉路径)
这题是混合路的欧拉路径问题. 1.判断图的连通性,若不连通,无解. 2.给无向边任意定向,计算每个结点入度和出度之差deg[i].deg[i]为奇数的结点个数只能是0个或2个,否则肯定无解. 3.(若 ...
-
bzoj2683简单题
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> ...
-
JavaScript---网络编程(8)-DHTML技术演示(1)
DHTML技术使用的基本思路: 1. 用标签封装数据-html范畴 2. 定义样式-css范畴 3. 明确事件源.事件和要处理的节点-dom范畴 4. 明确具体的操作方式,其实就是事件的处理内容(过程 ...
-
HDU2084 数塔 (DP入门题)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
-
js中的 AOP
原文 :http://blog.csdn.net/notejs/article/details/8770575 面向切面的编程(AOP)还是有点意思的,可以在不修改原有代码的情况下增加新功能.有一些j ...
-
ARGB 颜色取值与透明度对照表
1. ARGB 依次代表透明度(alpha).红色(red).绿色(green).蓝色(blue). 2. 透明度分为256阶(0-255),计算机上用16进制表示为(00-ff).透明就是0阶,不 ...
-
Python 函数装饰器
首次接触到装饰器的概念,太菜啦! Python 装饰器可以大大节省代码的编写量,提升代码的重复使用率.函数装饰器其本质也是一个函数,我们可以把它理解为函数中定义了一个子函数. 例如我们有这么一个需求, ...
-
WorldWind源码剖析系列:可渲染对象类RenderableObject
RenderableObject是WorldWind中所有需要渲染的对象的父类,继承了接口IRenderable和Icomparable.其派生类体系如下所示.RenderableObject的成员如 ...