当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法。那么我来谈谈这个问题。

$ free -m

total used free shared buff/cache available

Mem: 15707 781 3067 400 11858 14203

Swap: 4096 4 4091

其中:引用 total 内存总数 used 已经使用的内存数 free 空闲的内存数 shared 多个进程共享的内存总额 buffers Buffer Cache和cached Page Cache 磁盘缓存的大小 -buffers/cache 的内存数:used - buffers - cached +buffers/cache 的内存数:free + buffers + cached 可用的memory=free memory+buffers+cached 为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。 实际情况下,内存的管理还与Swap有关
手动释放缓存
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下: # cat /proc/sys/vm/drop_caches 0 首先,/proc/sys/vm/drop_caches的值,默认为0。 # sync手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

sudo -i

# echo 3 > /proc/sys/vm/drop_caches # cat /proc/sys/vm/drop_caches 3 将/proc/sys/vm/drop_caches值设为3

手动释放linux缓存——/proc/sys/vm/drop_caches

sudo sh -c “echo 1 > /proc/sys/vm/drop_caches” sudo sh -c “echo 2 > /proc/sys/vm/drop_caches” sudo sh -c “echo 3 > /proc/sys/vm/drop_caches” swap交换区,也称虚拟内存是Linux在内存不足时充当内存的文件(已验证) 在ubuntu里面往往不是物理内存全部耗尽采取使用swap分区,swappiness的值的大小对如何使用swap分区是有着很大的联系的。 swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。两个极端,对于 ubuntu的默认设置,这个值等于60,建议修改为10。具体这样做: 1.查看你的系统里面的swappiness cat /proc/sys/vm/swappiness不出意外的话,你应该看到是 602.修改swappiness值为10 sudo sysctl vm.swappiness=10但是这只是临时性的修改,在你重启系统后会恢复默认的60,所以,还要做一步: sudo gedit /etc/sysctl.conf在这个文档的最后加上这样一行: vm.swappiness=10

定时释放内存

该操作可能导致部分浏览器页面内容丢失转:https://blog.csdn.net/qq_21398167/article/details/51657977 ## CPU设置 转:https://blog.csdn.net/Heimerdinger_Feng/article/details/79126365 -sudo apt-get install cpufrequtils-cpufreq-info其中available cpufreq governors:performance,powersave表示我的cpu目前只支持高性能和省电两个模式所有的策略模式包括powersave, userspace, ondemand, conservative, performance这几种-sudo cpufreq-set -g performance-sudo cpufreq-set -d 3000m -u 3400m 设置当下策略下cpu频率【硬件为准】sudo cpufreq-set -d 3000m -u 3400m //适用模式:powersave|ondemand|conservative|performancesudo cpufreq-set -f {3000m~3400m} //适用模式:userspace