我正在运行一个python脚本来做一些统计,实际使用的内存很低,大约10%。并且没有其他进程消耗更多的内存。但是,当我使用时,free -m
它显示几乎95%的内存已被使用。关键是我的脚本应该从文件中进行大量读取,所以我想知道是否有任何Linux内存缓存机制导致了该问题?echo 1 >> /proc/sys/vm/drop_caches
有效,但似乎是手动的。我怎样才能降低内存成本并且不会对读取文件产生不良影响?
答案1
Linux 内核会自动将文件缓存在内存中以提高效率。这并不是一件坏事。运行时,free -m
您会在右侧看到缓存中使用的内存量。如果应用程序需要内存,内核将释放部分缓存。您不应该尝试自己管理它。
答案2
我认为你这里没有真正的问题。
你为什么要关心总内存使用量?这会造成什么影响吗?
Linux 会尽可能高效地使用内存。如果您有大量可用内存,并且正在读取大量文件,它会使用可用内存来缓存这些文件。如果您有大量活动内存,它会使用更少的内存进行缓存。这就是它应该的工作方式。如果您根本不想使用内存,请从计算机中取出芯片。
在一些罕见的情况下,大量缓存可能会带来坏处。也许读取的突发事件总是发生在内存分配的突发事件之前。也许您的特定情况意味着没有任何可能的好处,您需要挤出最后 0.1% 的性能成本。也许您使用的是使用有限寿命 RAM 的嵌入式系统。如果您有这样的情况,请告诉我们它是什么。