linux 编译缓存,Linux磁盘缓存(disk cache)详解

在Linux系统里通过free命令,我们经常可以看到类似下面的输出:

$ free -m

total used free shared buffers cached

Mem: 24097 21665 2432 0 1561 9383

-/+ buffers/cache: 10720 13377

Swap: 0 0 0

这时候我们不禁会问,到底可用内存是多少?是free显示的2432MB吗?buffers和cached分别代表什么?-/+ buffers/cache又是什么意思?

buffers和cached就是用于磁盘缓存的内存,也就是说当前实际应用程序可用的内存是free+buffers+cached=13377MB,而应用程序已占用的内存是10720MB。由于buffers+cached正在被用作磁盘缓存,因此操作系统会将它们计入已使用(used)内存,而对于程序员而言只要是可以分配给应用程序的内存就是可用(free)内存,因此实际上操作系统和程序员对于“使用中但可以分配给应用程序的内存”的归属存在术语上的差异,而free命令很人性化的通过-/+ buffers/cache体现了这种差异

需要特别强调的是,磁盘缓存只是"借用"应用程序暂时不需要使用的内存,这部分内存可以随时被应用程序使用,并且不会导致swap(或者说只有磁盘缓存被用光时才有可能触发swap)。磁盘缓存会将系统读写的文件内容和元数据信息暂存在内存中,以提升后续的读写速度

前面提到,buffers+cached一起构成了磁盘缓存(disk cache),那么它们分别代表什么,又有什么区别呢?buffers

你可能感兴趣的:(linux,编译缓存)