4

Linux 服务器上的缓存内存是否“免费”,即可供其他应用程序免费使用?

我知道Linux内存的使用方式与Windows不同......

但我只有几 MB 的可用内存和 1.2GB 的缓存内存:

             total       used       free     shared    buffers     cached
Mem:          3945       3893         51          0         28       1216
-/+ buffers/cache:       2648       1296
Swap:         3895        857       3038

是否像“不可用”一样使用了已损坏的内存?

定期删除缓存有意义吗?冲洗后我有:

             total       used       free     shared    buffers     cached
Mem:          3945       2820       1125          0          1        197
-/+ buffers/cache:       2621       1323
Swap:         3895        851       3044

1 小时后,它恢复到具有 1.2 GB 缓存内存的旧状态。

cat /proc/meminfo 冲洗后 1 小时:

MemTotal:      4040048 kB
MemFree:         44636 kB
Buffers:         30172 kB
Cached:        1247868 kB
SwapCached:     137156 kB
Active:        3316940 kB
Inactive:       493920 kB
SwapTotal:     3989496 kB
SwapFree:      3101076 kB
Dirty:           25696 kB
Writeback:           0 kB
AnonPages:     2527784 kB
Mapped:         219676 kB
Slab:            52356 kB
SReclaimable:    21240 kB
SUnreclaim:      31116 kB
PageTables:      96668 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   6009520 kB
Committed_AS:  6223392 kB
VmallocTotal: 34359738367 kB
VmallocUsed:     18852 kB
VmallocChunk: 34359719439 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
HugePages_Surp:      0
4

1 回答 1

1

需要明确的是,缓存列是使用的子集。进程使用的内存可以单独在已使用的列中,或者如果该内存被缓存,则可以同时在已使用的列和缓存的列中。Cached 只是关于缓存了多少已用内存的报告。

缓存中的内存项不是免费的,但如果您需要空间,它们将从缓存中删除并替换为更频繁请求的内容。但是,您的操作系统足够聪明,可以将经常使用的块保存在缓存中——不要试图比你的内存管理更聪明——总体上你可能会做得更糟。

这些相同的项目不断被加载到缓存中的原因是它们经常被需要。需要时不在缓存项中,仍然会用完该内存空间。

于 2012-11-01T16:31:51.740 回答