使用free命令经常看到buffers/cached占用了大量内存,那buffers/cached到底存了哪些内容?

[root@iZ94fgpisuuZ ~]# free
             total       used       free     shared    buffers     cached
Mem:       8058056    3799232    4258824          0       6704      66812
-/+ buffers/cache:    3725716    4332340
Swap:            0          0          0
区别
  • buffers:用于存储页、块信息,如文件属性、inode等;通过find查找的结果会缓存至buffers
  • cached:用于存放文件内容,包括了tmpfs、共享内存、nmap等;打开一个大文件,文件内容会缓存到cached
清除方法
  • 清除cached
    echo 1 > /proc/sys/vm/drop_caches
    
  • 清除buffers
    echo 2 > /proc/sys/vm/drop_caches
    
  • 同时清除cached和buffers
    echo 3 > /proc/sys/vm/drop_caches
    
哪些情况无法清除
  • tmpfs中,文件未删除,则cached无法释放
  • 共享内存未释放,则cached无法释放
  • nmap映射的内存未释放,则cached无法释放