1、查看内存使用情况 free -m/free -g
- total:内存总数
- used:已经使用的内存数
- free:空闲的内存数
- shared:当前已经废弃不用
- buffers Buffer:缓存内存数
- cached Page:缓存内存数
第一行:
Mem的 Total=used+free used使用内存 free空闲内存
shared 表示被几个进程共享的内存的。
buffer 缓冲 是用于存放要输出到disk(块设备)的数据。
是根据磁盘的读写 设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
cache 缓存 是存放从disk上读出的数据。是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。
其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
如果cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。
第二行:
这一行表示两项 -buffers/cache 和 + buffers/cache
-buffers/cache = used -(buffers+cache) 表示使用的内存中不计算buffers和cache,系统使用内存量
+ buffers/cache =free+( buffers+cache) 表示系统空闲内存与buffers、cache的和
第三行:
交换内存 使用量 空限量
Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率,所以这也正是linux内存管理中非常出色的一点,所以乍一看内存剩余的非常少,但是在程序真正需要内存空间时,linux会将缓存让出给程序使用,这样达到对内存的最充分利用,所以真正剩余的内存是free+buff/cache
但是有些时候大量的缓存占据空间,这时候应用程序回去使用swap交换空间,从而使系统变慢,这时候需要手动去释放内存,释放内存的时候,首先执行命令 sync 将所有正在内存中的缓冲区写到磁盘中,其中包括已经修改的文件inode、已延迟的块I/O以及读写映射文件,从而确保文件系统的完整性
2、sync
手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
3、释放 echo 3 > /proc/sys/vm/drop_caches
0:0是系统默认值,默认情况下表示不释放内存,由操作系统自动管理
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
如果现在想让操作系统重新分配内存,那么设置drop_caches的值为0即可
echo 0 > /proc/sys/vm/drop_caches