什么是内存内存(Memory)是计算机的重要部件之一,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,与硬盘等外部存储器交换的数据 。
它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平 。
只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来 。
内存的运行也决定计算机整体运行快慢的程度 。
Linux内存回收机制为啥要回收:
- 内核需要为任何时刻突发到来的内存申请提供足够的内存,以便cache的使用和其他相关内存的使用不至于让系统的剩余内存长期处于很少的状态 。
- 当真的有大于空闲内存的申请到来的时候,会触发强制内存回收 。
查看Linux内存情况查看/proc/meminfobash
[root@test ~]# cat /proc/meminfoMemTotal:16166688 kBMemFree:14051412 kBMemAvailable:14772588 kBBuffers:2116 kBCached:1073260 kBSwapCached:0 kBActive:770384 kBInactive:698264 kBActive(anon):450156 kBInactive(anon):76748 kBActive(file):320228 kBInactive(file):621516 kBUnevictable:0 kBMlocked:0 kBSwapTotal:33554428 kBSwapFree:33554428 kBDirty:476 kBWriteback:0 kBAnonPages:393328 kBMapped:153828 kBShmem:133628 kBSlab:246448 kBSReclaimable:133892 kBSUnreclaim:112556 kBKernelStack:13472 kBPageTables:30496 kBNFS_Unstable:0 kBBounce:0 kBWritebackTmp:0 kBCommitLimit:41637772 kBCommitted_AS:4257776 kBVmallocTotal:34359738367 kBVmallocUsed:320696 kBVmallocChunk:34350426108 kBHardwareCorrupted:0 kBAnonHugePages:155648 kBCmaTotal:0 kBCmaFree:0 kBHugePages_Total:0HugePages_Free:0HugePages_Rsvd:0HugePages_Surp:0Hugepagesize:2048 kBDirectMap4k:279276 kBDirectMap2M:6965248 kBDirectMap1G:11534336 kB
使用free命令查看bash[root@test ~]# free -htotalusedfreesharedbuff/cacheavailableMem:15G874M13G130M1.2G14GSwap:31G0B31G
参数说明:- total:总内存大小 。
- used:已经使用的内存大小(这里面包含cached和buffers和shared部分) 。
- free:空闲的内存大小 。
- shared:进程间共享内存(一般不会用,可以忽略) 。
- buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上 。
- cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回) 。
- available:还可以被应用程序使用的物理内存大小,和free的区别是,free是真正未被使用的内存,available是包括buffers、cached的 。
- Swap:硬盘上交换分区的使用大小 。
Cache主要是针对读操作设计的,不过Cache概念可能容易混淆,我理解为CPU本身就有Cache,包括一级缓存、二级缓存、三级缓存,我们知道CPU所有的指令操作对接的都是内存,而CPU的处理能力远高于内存速度,所以为了不让CPU资源闲置,Intel等公司在CPU内部集成了一些Cache,但毕竟不能放太多电路在里面,所以这部分Cache并不是很大,主要是用来存放一些常用的指令和常用数据,真正大部分Cache的数据应该是占用内存的空间来缓存请求过的数据,即上面的Cached部分(这部分纯属个人理解,正确与否有待考证) 。
【linux top命令的用法详细详解 linux释放内存命令】Buffer主要是针对写操作设计的,更细的说是针对内存和硬盘之间的写操作来设计的,目的是将写的操作集中起来进行,减少磁盘碎片和硬盘反复寻址过程,提高性能 。
推荐阅读
- linux命令修改系统时间方法 linux设置系统时间函数
- linux下mysql安装教程 mysql创建用户的命令
- cad块编辑命令 cad如何编辑块的属性
- 网址查询域名解析 解析dns命令
- 最流畅的linux桌面系统 arch linux安装
- centos7永久修改主机名命令 centos7更改主机名怎么配置
- linux服务器清理缓存方法 linux清缓存怎么清理
- linux联网设置方法 linux怎么上网搜索
- ubuntu系统关闭防火墙命令 ubuntu防火墙设置
- linux虚拟机安装mysql步骤 虚拟机安装mysql是数据库