本篇文章给大家谈谈内存怎么释放linux,以及备用内存怎么释放对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、linux 清除缓存 释放内存
- 2、Linux内核中如何申请和释放内存?
- 3、Linux下如何释放内存
- 4、linux清理内存缓存命令
- 5、linux内存占用率过高怎么办
1、linux 清除缓存 释放内存
这里的默认显示单位是kb,我的服务器是128G内存,所以数字显得比较大。这个命令几乎是每一个使用过Linux的人必会的命令,但越是这样的命令,似乎真正明白的人越少(我是说比例越少)。一般情况下,对此命令输出的理解可以分这几个层次:
1.不了解。这样的人的第一反应是:天啊,内存用了好多,70个多G,可是我几乎没有运行什么大程序啊?为什么会这样?Linux好占内存!
2.自以为很了解。这样的人一般评估过会说:嗯,根据我专业的眼光看的出来,内存才用了17G左右,还有很多剩余内存可用。buffers/cache占用的较多,说明系统中有进程曾经读写过文件,但是不要紧,这部分内存是当空闲来用的。
3.真的很了解。这种人的反应反而让人感觉最不懂Linux,他们的反应是:free显示的是这样,好吧我知道了。神马?你问我这些内存够不够,我当然不知道啦!我特么怎么知道你程序怎么写的?
根据目前网络上技术文档的内容,我相信绝大多数了解一点Linux的人应该处在第二种层次。大家普遍认为,buffers和cached所占用的内存空间是可以在内存压力较大的时候被释放当做空闲空间用的。但真的是这样么?在论证这个题目之前,我们先简要介绍一下buffers和cached是什么意思:
什么是buffer/cache?
buffer和cache是两个在计算机技术中被用滥的名词,放在不通语境下会有不同的意义。在Linux的内存管理中,这里的buffer指Linux内存的:Buffer cache。这里的cache指Linux内存中的:Page cache。翻译成中文可以叫做缓冲区缓存和页面缓存。在历史上,它们一个(buffer)被用来当成对io设备写的缓存,而另一个(cache)被用来当作对io设备的读缓存,这里的io设备,主要指的是块设备文件和文件系统上的普通文件。但是现在,它们的意义已经不一样了。在当前的内核中,page cache顾名思义就是针对内存页的缓存,说白了就是,如果有内存是以page进行分配管理的,都可以使用page cache作为其缓存来管理使用。当然,不是所有的内存都是以页(page)进行管理的,也有很多是针对块(block)进行管理的,这部分内存使用如果要用到cache功能,则都集中到buffer cache中来使用。(从这个角度出发,是不是buffer cache改名叫做block cache更好?)然而,也不是所有块(block)都有固定长度,系统上块的长度主要是根据所使用的块设备决定的,而页长度在X86上无论是32位还是64位都是4k。
明白了这两套缓存系统的区别,就可以理解它们究竟都可以用来做什么了。
什么是page cache?
Page cache主要用来作为文件系统上的文件数据的缓存来用,尤其是针对当进程对文件有read/write操作的时候。如果你仔细想想的话,作为可以映射文件到内存的系统调用:mmap是不是很自然的也应该用到page cache?在当前的系统实现里,page cache也被作为其它文件类型的缓存设备来用,所以事实上page cache也负责了大部分的块设备文件的缓存工作。
什么是buffer cache?
Buffer cache则主要是设计用来在系统对块设备进行读写的时候,对块进行数据缓存的系统来使用。这意味着某些对块的操作会使用buffer cache进行缓存,比如我们在格式化文件系统的时候。一般情况下两个缓存系统是一起配合使用的,比如当我们对一个文件进行写操作的时候,page cache的内容会被改变,而buffer cache则可以用来将page标记为不同的缓冲区,并记录是哪一个缓冲区被修改了。这样,内核在后续执行脏数据的回写(writeback)时,就不用将整个page写回,而只需要写回修改的部分即可。
如何回收cache?
Linux内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。一般情况下,这个操作中主要的内存释放都来自于对buffer/cache的释放。尤其是被使用更多的cache空间。既然它主要用来做缓存,只是在内存够用的时候加快进程对文件的读写速度,那么在内存压力较大的情况下,当然有必要清空释放cache,作为free空间分给相关进程使用。所以一般情况下,我们认为buffer/cache空间可以被释放,这个理解是正确的。
2、Linux内核中如何申请和释放内存?
1、首先打开Linux命令窗口,可使用快捷键Ctrl+Alt+T打开。
2、这时查看一下当前Linux系统内存使用情况,使用命令:Free –m,total 内存总数,used 已经使用的内存数,free 空闲的内存数。
3、接下来的操作需要先获取高级用户权限,输入命令:sudo -i,确定后输入高级用户密码。
4、这时进行拷贝文件拷贝,增加内存使用量(即used的占用量),输入命令: cp -r /etc ~/test/。
5、执行命令结束后,再次查看一下当前Linux系统内存使用情况,发现有70M的内存被cached用了。使用命令:Free –m。
6、接下来释放已被占用的缓存,输入命令: cat /proc/sys/vm/drop_caches,回车后返回结果0。
7、接着输入命令:sync,回车后继续输入命令:echo 3 /proc/sys/vm/drop_caches,回车后继续输入:cat /proc/sys/vm/drop_caches,回车后返回结果3,将/proc/sys/vm/drop_caches值设为3。
8、这样缓存释放就已经完成了,再次执行命令Free –m看看,通过图中可以对比看到,内存被释放了218M。
3、Linux下如何释放内存
首先,查看/proc/sys/vm/drop_caches的值
[root@server test]# cat /proc/sys/vm/drop_caches
值默认为0
然后,运行sync命令
[root@server test]# sync
手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
最后,输入手动释放内存的命令
[root@server test]# echo 1 /proc/sys/vm/drop_caches
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
释放完内存后改回去让系统重新自动分配内存
echo 0 /proc/sys/vm/drop_caches
free -m #看内存是否已经释放掉了。
如果我们需要释放所有缓存,就输入下面的命令:
[root@server test]# echo 3 /proc/sys/vm/drop_caches
4、linux清理内存缓存命令
看缓存的命令
free -m
清理缓存的命令
echo 1 /proc/sys/vm/drop_caches
echo 2 /proc/sys/vm/drop_caches
echo 3 /proc/sys/vm/drop_caches
echo 0 是不释放缓存
echo 1 是释放页缓存 《Linux就该这么学》
ehco 2 是释放dentries和inodes缓存
echo 3 是释放 1 和 2 中说道的的所有缓存
5、linux内存占用率过高怎么办
1. 使用top 查看内存的占用情况,然后键入"M"命令根据内存的占用情况降序排列("P"是CPU占用情况降序排列)
2.关闭掉不需要的进程,
3.再使用top查看内存占用情况,发觉内存占用率已经降下来了,但是free -h却还有100G被占用(内存总共128G),vmstat发现是cache 占用了大量内存。
4. 使用 echo 1 /proc/sys/vm/drop_caches 释放缓存
常用的释放缓存的命令如下
To free pagecache:仅清除页面缓存(PageCache)
echo 1 /proc/sys/vm/drop_caches
To free dentries and inodes:清除目录项和inode
echo 2 /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:清除页面缓存,目录项和inode
echo 3 /proc/sys/vm/drop_caches
5.再使用free -h 查看内存使用情况,发现内存使用情况已经正常了
关于内存怎么释放linux和备用内存怎么释放的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。