我某处发生了内存泄漏,但它似乎与我的程序无关。我做出这个大胆的声明是基于这样一个事实:一旦我的程序终止,无论是通过正常方式、段错误还是中止,内存都不会恢复。如果我的程序是罪魁祸首,我会假设 MMU 会恢复所有内容,但事实并非如此。
只有当我将 stdout(在 BASH 版本 2.05 或 4 中)重定向到一个文件时,泄漏才会起作用,因为这是可以的:
# my-program
但这不是:
# my-program > /mnt/sda1/log-output.txt
我在屏幕上打印的速度 < 2Kb/秒。 (该文件位于 USB key 上)。
有什么想法吗?
一个相关的问题是here .
最佳答案
MemFree 本身几乎什么都没说。
Linux 的 block 层缓存很多。
您可以在您提到的同一/proc/meminfo 中看到文件系统(和其他)缓存使用了多少。
关于重定向 stdio 时 Linux BASH 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1545530/